hidden fields - Sicherheitsproblem oder nicht??
cayaphas
- php
-1 Tom0 Der Martin0 cayaphas
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
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
tach,
genau ... aber ein anderes oder größeres sicherheitsrisiko als jedes andere beliebige formularfeld ist das ja dann auch nicht, oder??
dank dir
caya
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
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
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