holgersen: form input --> cgi

Schönen Guten Abend zusammen,

mein Problem betrifft die Schnittstelle html-perl. Folgendes hat sich zugetragen....:

Ich habe eine html-Seite mit mehreren

<form action="./cgi-bin/xxxxxxxx.cgi" method="post">
</form>

Blöcken geschrieben, in denen sich jeweils verschiedene

<input type=password size="10" name="passwortfeld">,
<input type="submit" value="Formular abschicken">,
<input type="reset" value="Eintraege loeschen">

usw. befinden. Entsprechend sollen sich durch Anklicken verschiedener "submit" Buttons verschiedene .cgi-Dateien öffnen. Auf der html-Seite befindet sich das input-Feld

<input type=password size="10" name="passwortfeld">

natürlich nur in einem bestimmten form-Block (Ich glaube, man kann forms nicht schachteln.). In der entsprechenden cgi-Datei kann ich natürlich checken, ob das Passwort richtig eingegeben wurde. Innerhalb der anderen form-Blöcke bzw. den entsprechenden cgi-Dateien (Perl) ist das entsprechende Passwort aber unbekannt (param("passwortfeld")). Mich würde nun interessieren, wie man es hinbekommt, dass man in allen entsprechenden cgi-Dateien auf das Passwort prüfen kann (Dabei möchte ich es im html-Formular natürlich nur einmal eingeben). Vielen Dank schonmal,

holgersen

  1. Hello,

    jeder Ressouce-Path hat ein eigenen Passwort.
    Das verwaltet der Browser, wenn er dazu zuvor durch einen Status 401
    http://de.selfhtml.org/servercgi/server/httpstatuscodes.htm aufgefordert wurde.

    Wenn Du einfach nur Form-Blöcke im HTML-Script unterbringst, die unaufgefordert Passworte mitsenden, dann hast Du bei "Normalbrowsern" keine Chance, dass die sich das merken. Du müsstest das dann dem auf dem Server regeln, indem Du ein Cookie zurücksendest, oder ein Zertifikat al Hidden-Element in die Forms einbaust, dass der Client dann beim nächten Request (hoffentlich) wieder mitsendet.

    Liebe Grüße aus Syburg bei Dortmund

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
  2. mein Problem betrifft die Schnittstelle html-perl. Folgendes hat sich zugetragen....:

    Ich habe eine html-Seite mit mehreren

    <form action="./cgi-bin/xxxxxxxx.cgi" method="post">
    </form>

    Blöcken geschrieben, in denen sich jeweils verschiedene .....

    Dein Ansatz ist irgendwie verquer. Du möchtest vermutlich ein Session Managament einbauen und nicht bei jedem Formular das Passwort übertragen.

    Struppi.

    1. mein Problem betrifft die Schnittstelle html-perl. Folgendes hat sich zugetragen....:

      Ich habe eine html-Seite mit mehreren

      <form action="./cgi-bin/xxxxxxxx.cgi" method="post">
      </form>

      Blöcken geschrieben, in denen sich jeweils verschiedene .....

      Dein Ansatz ist irgendwie verquer. Du möchtest vermutlich ein Session Managament einbauen und nicht bei jedem Formular das Passwort übertragen.

      Struppi.

      Danke erstmal für die Info. Vielleicht will ich das? Der Begriff Session Management ist mir allerdings nicht geläufig. Was ich eigentlich will, ist,
      ein einmal in einem html-Formular eingegebenes Passwort in allen cgi-Files, die von dieser Seite aus aufgerufen werden, zu kennen, weil jedes dieser Scripts nur loslaufen soll, wenn das Passwort richtig eingegeben wurde. Bis jetzt ist es so, dass ich das Passwort nur in dem .cgi-File checken kann, das in dem form-Block steht, in dem das "<input type= password....>" steht. Noch 'ne Idee?

      1. Noch 'ne Idee?

        Du willst Sessions!

        Struppi.

      2. Mahlzeit holgersen,

        Was ich eigentlich will, ist,
        ein einmal in einem html-Formular eingegebenes Passwort in allen cgi-Files, die von dieser Seite aus aufgerufen werden, zu kennen, weil jedes dieser Scripts nur loslaufen soll, wenn das Passwort richtig eingegeben wurde.

        Nein, das willst Du nicht. Du willst, dass ein Benutzer sich nur einmalig Deinem System gegenüber identifizieren und autentifizieren muss und dass die Information, dass der Benutzer "eingeloggt" ist, dann von allen anderen Skripten abgefragt und ausgewertet werden kann. Mit einem (Struppis) Satz: Du willst Sessions. :-)

        Also informiere Dich über den genannten Begriff "Session Management" bzw. "Session Handling" ...

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Mahlzeit holgersen,

          Was ich eigentlich will, ist,
          ein einmal in einem html-Formular eingegebenes Passwort in allen cgi-Files, die von dieser Seite aus aufgerufen werden, zu kennen, weil jedes

          dieser Scripts nur loslaufen soll, wenn das Passwort richtig eingegeben wurde.

          Nein, das willst Du nicht. Du willst, dass ein Benutzer sich nur einmalig Deinem System gegenüber identifizieren und autentifizieren muss und dass die Information, dass der Benutzer "eingeloggt" ist, dann von allen anderen Skripten abgefragt und ausgewertet werden kann. Mit einem (Struppis) Satz: Du willst Sessions. :-)

          Also informiere Dich über den genannten Begriff "Session Management" bzw. "Session Handling" ...

          MfG,
          EKKi

          Hallo EKKi und Struppi,

          Ihr habt ja wirklich kein Erbarmen...! Dann will ich mich mal über "Session Management" informieren. Das scheint mir jetzt natürlich ein weiterer Weg als der, den ich mir vorgestellt hatte. Aber wenn es nicht anders geht, was will man machen?! Obwohl ich es schon ein bisschen strange finde, dass man das Passwort nicht an alle cgi-Files weitergeben kann. Wie auch immer, wir sehen uns bestimmt noch zum Thema "Session Management"...... Viele Grüße und vielen Dank,

          holgersen

          1. Ihr habt ja wirklich kein Erbarmen...! Dann will ich mich mal über "Session Management" informieren. Das scheint mir jetzt natürlich ein weiterer Weg als der, den ich mir vorgestellt hatte. Aber wenn es nicht anders geht, was will man machen?! Obwohl ich es schon ein bisschen strange finde, dass man das Passwort nicht an alle cgi-Files weitergeben kann.

            Inwiefern strange? Dir muss doch klar sein, wenn du Passwörter weitergeben willst du dir auch über Sicherheit Gedanken musst, aber natürlich bleibt es dir überlassen, jedes Formular mit dem Passwort zu füttern, dass musst du natürlich von Hand machen an der Stelle wo du es erzeugst, i.d.R. reicht dort ein: CGI::hidden(-name => 'passwort'), aber halt in jedem Formular, allerdings musst du sowas evtl. auch in einer Sessionverwaltung machen, wenn du nicht allein auf Cookies zugreifen willst.

            Struppi.

          2. Mahlzeit holgersen,

            Ihr habt ja wirklich kein Erbarmen...!

            Nö ... ;-)

            Dann will ich mich mal über "Session Management" informieren.

            Guter Plan.

            Das scheint mir jetzt natürlich ein weiterer Weg als der, den ich mir vorgestellt hatte.

            Das mag sein - aber ein wesentlich sicherer. Was nützt Dir ein schneller Erfolg, wenn es nur Flickschusterei ist und Du anschließend an 1000 Stellen nachbessern musst?

            Aber wenn es nicht anders geht, was will man machen?!

            Sicher geht es anders. Aber es ist im Hinblick auf Datensicherheit äußerst riskant, ein Passwort durch alle möglichen Skripte (wohlmöglich noch als verstecktes Feld, das jederzeit vom Benutzer auslesbar ist) hindurchzuschleifen.

            Obwohl ich es schon ein bisschen strange finde, dass man das Passwort nicht an alle cgi-Files weitergeben kann.

            Ja? Wieso? Ein Passwort ist doch ein sicherheitskritisches Datum - wieso sollte das also öffentlich für alle Skripte verfügbar sein? Es MUSS reichen, sich EINMAL anzumelden.

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
          3. Hello,

            Ihr habt ja wirklich kein Erbarmen...! Dann will ich mich mal über "Session Management" informieren.

            Tu das. Es ist mit PHP einfacher, als Du denkst. Du darfst nur nicht anfangen, darüber nachzudenken ;-))

            http://www.php.net/manual/en/book.session.php

            Das scheint mir jetzt natürlich ein weiterer Weg als der, den ich mir vorgestellt hatte. Aber wenn es nicht anders geht, was will man machen?!

            Obwohl ich es schon ein bisschen strange finde, dass man das Passwort nicht an alle cgi-Files weitergeben kann.

            Mit Einschränkungen kann man das doch beim Apache Webserver! Bei IIS sollte es andere Konzepte geben. Hatte ich Dir auch schon ansatzweise geschrieben.

            Das Zauberwort heißt beim Apachen "Basic Authentication" (Google mal danach oder schau hier im Archiv). Wenn alle CGI-Ressourcen im selben Pfad zu finden sind, kannst Du sie einerseits mit Basic Authentication (.htacess-Datei) schützen und zusätzlich auch eine Prüfung in die Scripte selber einbauen. Allerdings fehlt Dir dann bei CGI vermutlich das User-Passwort. Es wird standardmäßig nur der Username an die Scripte weitergegeben (das gilt für Apache Webserver). Das kann man aber mittels Mod rewrite und einem Import der Server-Variable aus dem Environment korrigieren. Dazu gibt es auch Threads hier im Archiv.

            Wenn einmal die Basic Authentication durch den HTTP-Status 401 im Response-Header ausgelöst wurde und der Client dir passenden Credentials (Username und Password) mitgesendet hat, dafür dan  einen Status 200 kassiert hat, dann merkt er sich für alle ressourcen aus demselben Pfad diese Kombination und sendet sie dorthin auch immer mit. damit muss  man die Credentials dann beim nächsten Mal nicht mehr eingeben.

            Liebe Grüße aus Syburg bei Dortmund

            Tom vom Berg

            --
            Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hello,

              Tu das. Es ist mit PHP einfacher, als Du denkst. Du darfst nur nicht anfangen, darüber nachzudenken ;-))

              Sorry, da stand "Perl" und ich habe "PHP" gelesen.

              Aber sinngemäß funktioniert das auch so in Perl.
              Baic Authentication hat nichts mit der Scriptsprache zu tun, die die Requests auswerten soll, sondern nur mit HTTP-Server und HTTP-Client.

              Liebe Grüße aus Syburg bei Dortmund

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de