Der Martin: HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Beitrag lesen

Hallo Richard,

Ich habe ein Kontaktformular das sich bei Submit selbst aufruft ...

und damit machst du dir selbst die Sache schwierig.

Dieses Script überprüft also, ob POST-Daten übermittelt wurden, wenn nicht, gibt´s Mecker.

Wenn dieses Script, also die Auswertung und Bearbeitung der Formulardaten, vom Formular selbst (Eingabemaske) getrennt ist, ist das überhaupt kein Problem.

Also habe ich eine Abfrage dazwischengeschaltet, die $_SERVER['HTTP_REFERER'] überprüft und den Check nur dann durchführt, wenn der Eintrag dort die Datei mit dem Formular ist (PHP_SELF).

Was ist, wenn ich die URL deines Kontaktformulars direkt aufrufe? Wenn ich sie als Bookmark abrufe? Wenn jemand direkt auf dein Kontaktformular verlinkt? Wenn ich ein Privacy-Tool verwende, das den Referer ausfiltert? Wenn ich einen Browser verwende, bei dem ich die Übermittlung des Referers abgeschaltet habe? In all diesen Fällen kommt _kein_ Referer oder der einer anderen Seite bei dir an, und deine Falle schnappt zu. In allen skizzierten Fällen IMHO unberechtigt.

Ich wollte allerdings nicht das Rad neu erfinden und gleich mit dem Vorschlaghammer drauflosgehen. Gibt es vielleicht eine elegantere Lösung?

Ich würde, wie gesagt, das Formular selbst vom auswertenden Script trennen. Was soll's, wenn die Formularseite zigmal abgerufen wird? Das stört doch nicht. Und das auswertende Script prüft dann auf Plausibilität der POST-Daten. Um die Sache noch ein bisschen besser zu machen, könntest du im Formular noch zwei oder mehr hidden-Felder unterbringen, deren Inhalte in einer bestimmten Beziehung stehen müssen. Diese Beziehung kann dein Script dann zusätzlich kontrollieren.

So long,
 Martin

--
Solange der Nagellack nicht trocken ist,
ist eine Frau praktisch wehrlos.
  (Burt Reynolds, US-Schauspieler)