cayaphas: hidden fields - Sicherheitsproblem oder nicht??

tach,

es geht mal wieder darum, Variablen über mehrere PHP-Skripts zu halten.

Natürlich bietet es sich an, mit Sessions oder Cookies zu arbeiten, jedoch geht es mir jetzt um die Benutzung von hidden-fields.

Aber jetzt meine Frage:
Ich lese hin und wieder, dass vom dynamischen Generieren von hidden-fields abzuraten ist, da sie ein Sicherheitsproblem darstellen.

Ich hab vielleicht zu wenig Ahnung vom Manipulieren eines HTTP-Headers, und verstehe es deshalb nicht so ganz.

Aber weshalb sollte von hidden-fields abzuraten sein?
Ein hidden field sorgt doch nur dafür, dass in den Header zum Beispiel eine $_POST-Variable geschrieben wird, welche dann vom aufgerufenen Skript ausgewertet werden kann, oder?

Wenn man davon ausgeht, dass man die Variablen überprüft, so wie man es auch mit den "normalen" Formularfeldern machen sollte, stellt sich doch eigentlich kein Problem dabei, oder?

Das einzige was ich an hidden-fields unangenehm finde, ist das Sie im HTML-Code auftauchen, aber es geht doch überhaupt nicht anders, wenn ich keine Sessions oder Cookies benutze.

Wenn es irgendein Sicherheitsproblem mit hidden-fields geben sollte, wäre ich dankbar, wenn es mir jemand kurz und knapp erklären könnte, sonst habe ich die ganze Zeit ein schlechtes Gefühl, wenn ich sie trotzdem benutze. :-) (ich weiss, ist ne schlechte Ausrede Sessions zu vermeiden)

Dank Euch im Voraus
Caya

  1. Hello,

    wenn sichergestellt ist, dass der Transport immer über ein Formular per Post geschieht, dann kannst Du ein einziges Hidden-Field dafür verwenden.

    Daten empfangen
    in einem Array zusammenfassen
    Array serialisieren
    Array codieren, z.B. mit Base64 und in Hidden-Field schreiben
    Response senden
    Request zurücksenden
    Daten empfangen
    Hidden-Field decodieren
    Decodete Daten deserialisieren
    Damit arbeiten
    wieder serialisieren
    Wieder codieren
    Response senden
    ...

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau

    1. tach,

      genau ... aber ein anderes oder größeres sicherheitsrisiko als jedes andere beliebige formularfeld ist das ja dann auch nicht, oder??

      dank dir
      caya

      1. Hello,

        genau ... aber ein anderes oder größeres sicherheitsrisiko als jedes andere beliebige formularfeld ist das ja dann auch nicht, oder??

        Nö, das ist im Prinzip kein Risiko, da die Datenhohheit vom Client an den Server doch erst im letzten Schritt übergehen sollte, sonst verzettelt man sich nur.

        Wenn Du jetzt also einen mehrstufigen Vorgang hast, kann der User währenddessen mit den Daten machen, was er will. Er wird ggf. vom Server zwischendurch unterstützt durch Nachschlagewerte, aber wenn er meint, die ändern zu müssen, merkt der Server das eben spätenstens bei der Plausibilitätskontrolle _vor_ der persistenten Speicherung.

        Der Nachteil ist nur der eventuell geringfügig erhöhte Traffic gegenübr einer Sessionlösung [1]. Da aber Webseiten heute meistens bunt und bebildert sind, werden diese paar Hundert Bytes auch nichts mehr ausmachen ;-))

        [1] Wenn man sowieso Werte per Post durchschleifen muss, ist man von einer Sessionlösung nur noch zwei Schritte weit entfernt, nämlich nur eine SessionID durchzuschleifen und die daten in einem File auf dem Server zu speichern. Das muss keine originale Session von PHP sein...

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

  2. Hallo,

    Aber jetzt meine Frage:
    Ich lese hin und wieder, dass vom dynamischen Generieren von hidden-fields abzuraten ist, da sie ein Sicherheitsproblem darstellen.

    naja, nicht mehr und nicht weniger als bei jeder anderen Methode auch.

    Ich hab vielleicht zu wenig Ahnung vom Manipulieren eines HTTP-Headers, und verstehe es deshalb nicht so ganz.

    Nein, mit HTTP-Headern hat das auch gar nichts zu tun. Formularfelder (auch vom Typ "hidden") werden ja je nach Zugriffsmethode in der URL (GET) oder im Request Body (POST) übertragen.

    Aber weshalb sollte von hidden-fields abzuraten sein?

    Weil der Benutzer die Inhalte dieser Felder beliebig manipulieren kann. Das kann dir aber egal sein, wenn du im letzten Schritt sowieso eine Plausibilitätskontrolle über alle eingegebenen Daten machst (was du auf jeden Fall tun solltest).

    Ein hidden field sorgt doch nur dafür, dass in den Header zum Beispiel eine $_POST-Variable geschrieben wird, welche dann vom aufgerufenen Skript ausgewertet werden kann, oder?

    Nein, eben nicht in den *Header*, sondern in den Body.

    Das einzige was ich an hidden-fields unangenehm finde, ist das Sie im HTML-Code auftauchen, aber es geht doch überhaupt nicht anders, wenn ich keine Sessions oder Cookies benutze.

    Richtig.

    Schönen Abend noch,
     Martin

    --
    Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
    1. Nein, mit HTTP-Headern hat das auch gar nichts zu tun. Formularfelder (auch vom Typ "hidden") werden ja je nach Zugriffsmethode in der URL (GET) oder im Request Body (POST) übertragen.

      ok, dann hab ich wahrscheinlich bis jetzt einen HTTP-Request und nen HTTP-Header durcheinandergebracht. (Wie schon gesagt, zu wenig ahnung)

      Ein hidden field sorgt doch nur dafür, dass in den Header zum Beispiel eine $_POST-Variable geschrieben wird, welche dann vom aufgerufenen Skript ausgewertet werden kann, oder?

      Nein, eben nicht in den *Header*, sondern in den Body.

      Ich werd mich mal schlau machen, das ich auch davon rede was ich denke ...

      dank dir
      caya