dedlfix: Referer als SIcherheitsmaßnahme?

Beitrag lesen

echo $begrüßung;

Was aber, wenn jemand den Quelltext kopiert, aus dem '<input type="hidden" name="article_id" value="23">' ein '<input type="hidden" name="article_id" value="25">' macht, das Ganze auf einem anderen Server ablegt und dort ausführt?

Man kann mit der entsprechenden Browser-Erweitung auch direkt aus der 23 eine 25 machen. Dann muss man sich nicht noch nicht mal um Referrer kümmern.

Dann werden die Kommentar-Daten ja nach der Manipulation mit Artikel 25 statt mit Artikel 23 in Verbindung gebracht.

Du versuchst hier eine einzige Möglichkeit, Unfug anzustellen, zu verhindern. Wenn jemand einen Kommentar unter einen falschen Beitrag setzen will, dann kann er das auch durch Aufrufen des falschen Beitrags machen. Du versuchst, ein soziales Problem mit technischen Mitteln zu verhindern. Menschen sind viel erfinderischer als man selbst berücksichtigen kann. Dir wird es (vermutlich) nie vollständig gelingen, jeglichen Missbrauch auszuschließen.

Meine Überlegung war jetzt, dass ich mit einem '$referer=$_SERVER["HTTP_REFERER"];' vor der Weiterverarbeitung überprüfe,

Damit wird nichts überprüft, nur sinnlos eine weitere Variable mit dem bereits in $_SERVER["HTTP_REFERER"] stehenden Wert angelegt.

ob die zu übernehmenden Usereingaben auch _wirklich_ von meinem Formular, also zB von http://example.org/formular.php kommen und erst _dann_ eine Weiterverarbeitung vornehme.

Jede Angabe, die vom Benutzer kommt, ist veränderbar. Das gilt auch für den Referrer. Es ist auch nicht unüblich, dass Referrer von beispielsweise Sicherheitssoftware geändert werden.

Jetzt hab ich aber gelesen, daß man den Referer nicht zu sicherheitsrelevanten Zwecken auf einer Website einzusetzen soll, weil man damit auch Leute, die zB. in einer Firma hinter einem Proxyserver, der die Refererdaten wegfiltert, sitzen, ungerechterweise ausschließen würde.

Eben. Wie gesagt, jegliche vom Benutzer kommende Daten können manipuliert werden und sind per se nicht vertrauenswürdig.

Nun frage ich mich, wie man es dann elegant löst, sich von oben beschriebenen Manipulationen zu schützen. Also wie man ganz allgemein sicherstellen kann, dass Formulardaten, die verarbeitet werden, auch wirklich vom erwarteten Formular auf dem eigenen Server kommen?

Es geht nicht.

Du kannst nicht viel mehr machen, als auf Plausibilität zu prüfen soweit das technisch mit vertretbarem Aufwand möglich ist und für einen sicheren Transport zum DBMS sorgen. Alles weitere musst du mit deiner Intelligenz als Mensch begutachten und beurteilen und entsprechend reagieren.

echo "$verabschiedung $name";