Harry: Sicherheit, $_POST, $_SERVER["HTTP_REFERER"], register_globals

Beitrag lesen

Holladiewaldfee,

Angenommen, die Variable $check ist sicherheitsrelevant, dann könnte jeder beliebige User ein eigenes _POST-Formular_ schreiben, und nach Seite 2 die Variable $check mit einem anderen Wert übergeben.

Du darst keiner einzige User-Eingabe trauen und mußt alles überprüfen. Aber wenn Du eine Variable einmal geprüft hast, dann kannst Du Sie im Normalfall auch ein zweites mal prüfen.

Deshalb habe ich mir gedacht, die Variable $_SERVER["HTTP_REFERER"] zu benutzen, um zu überprüfen, ob die Seite, die die Variablen mit POST übermittelt wirklich von meinem eigenen Root-Server kommt.

Schlechte Idee ...

Jetzt die Frage: Ist $_SERVER["HTTP_REFERER"] immer vorhanden (feste Root-Server-Konfiguration) oder ist das Vorhandensein der Variablen vom Browser abhängig und die Variable kann vom User geändert werden?

Nein, der Referer kann beliebig gefälscht werden, und das ist gar nicht mal so schwer. Der Referer wird vom Clienten gesendet - also darfst Du ihm nicht trauen.

Wenn $_SERVER["HTTP_REFERER"] nicht sicher ist, wie prüfe ich dann, daß wirklich nur Daten benutzt werden, die ich selbst mit meinem Dokument übergeben habe?

Zwischenergebnisse in einer Session oder in der Datenbank abspeichern (Identifikation über Hash-Key) etc.

Ciao,

Harry

--
  Intelligenz ist nicht zwingend etwas positives.
  Man weiß erst, was man hatte, wenn man es verloren hat.