Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Juni

SELFHTML Forumsarchiv
HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Informationsseite
  1. Seite (PHP) HTTP_REFERER in Zusammenhang mit Formularüberprüfung von Richard, 29. 06. 2006, 20:54
nach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Richard, 29. 06. 2006, 20:54

Hallo,

Ich habe ein Kontaktformular das sich bei Submit selbst aufruft und dessen Eingaben mittels PHP überprüft werden. Dieses Script überprüft also, ob POST-Daten übermittelt wurden, wenn nicht, gibt´s Mecker.

Wenn ich die Seite mit dem Formular von woanders aufrufe, wurden aber auch keine Daten übermittelt, folglich wird auch dann gemeckert. 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).

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

Beste Grüße

--
Meine bescheidene Internetpräsenz - Gästebucheinträge erwünscht!

Das beste Freeware-Programm der Welt
Selfcode: ie:( fl:| br:^ va:| ls:[ fo:) rl:( n4:| ss:| de:[ js:| ch:? sh:( mo:) zu:|

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Der Martin, 29. 06. 2006, 21:12

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)

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Richard, 29. 06. 2006, 21:17

Hallo Der Martin,

»» »» Ich habe ein Kontaktformular das sich bei Submit selbst aufruft ...
»»
»» und damit machst du dir selbst die Sache schwierig.

Das hat den Grund, dass die Fehlermeldungen dann direkt in die Seite integriert sind und nicht optisch aus dem Inhalt gerissen werden.

»» »» 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.

Dafür kann ich ja vorweg abfragen, ob in HTTP_REFERER überhaupt etwas steht.

Beste Grüße

--
Meine bescheidene Internetpräsenz - Gästebucheinträge erwünscht!

Das beste Freeware-Programm der Welt
Selfcode: ie:( fl:| br:^ va:| ls:[ fo:) rl:( n4:| ss:| de:[ js:| ch:? sh:( mo:) zu:|

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 29. 06. 2006, 21:16

Hallo Richard,

»» Wenn ich die Seite mit dem Formular von woanders aufrufe, wurden aber auch keine Daten übermittelt, folglich wird auch dann gemeckert.

hier solltest Du ansetzen.

»» 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).

Das ist keine gute Idee. Manche Benutzer haben keinen Einfluß auf den Referrer, der ihren Anfragen mitgegeben wird, manche verändern diese Information auch ganz bewußt.

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

Überprüfe doch die möglichen Submit-Methoden :-)



Freundliche Grüße

Vinzenz

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Richard, 29. 06. 2006, 21:21

Hallo Vinzenz,

»» Überprüfe doch die möglichen Submit-Methoden :-)

Wie meinst du das? Was sind Submit-Methoden? GET & POST?

Beste Grüße

--
Meine bescheidene Internetpräsenz - Gästebucheinträge erwünscht!

Das beste Freeware-Programm der Welt
Selfcode: ie:( fl:| br:^ va:| ls:[ fo:) rl:( n4:| ss:| de:[ js:| ch:? sh:( mo:) zu:|

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 29. 06. 2006, 21:45

Hallo Richard,

»» »» Überprüfe doch die möglichen Submit-Methoden :-)
»» Wie meinst du das? Was sind Submit-Methoden? GET & POST?

Nö, meine ich nicht. Du hast aber typischerweise ein Formularelement oder mehrere Formularelemente, das für das Absenden verantwortlich ist (sind). Überprüfe, ob eines davon genutzt wurde.


Freundliche Grüße

Vinzenz

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Richard, 29. 06. 2006, 22:07

Hallo,

»» »» »» Überprüfe doch die möglichen Submit-Methoden :-)
»» »» Wie meinst du das? Was sind Submit-Methoden? GET & POST?
»»
»» Nö, meine ich nicht. Du hast aber typischerweise ein Formularelement oder mehrere Formularelemente, das für das Absenden verantwortlich ist (sind). Überprüfe, ob eines davon genutzt wurde.

Danke, so hab ich´s jetzt gemacht. Ich habe dem Submit-Button, der auch wirklich ein Button ist (kein input...), ein value verpasst, auf welches das $_POST-Array überprüft wird. Genau das gibt mir aber immernoch zu denken: _Wenn_ es ein <input type="submit"> wäre, hätte value ja bekanntlich noch andere Folgen. Das kann´s doch auch noch nicht sein?

Beste Grüße

--
Meine bescheidene Internetpräsenz - Gästebucheinträge erwünscht!

Das beste Freeware-Programm der Welt
Selfcode: ie:( fl:| br:^ va:| ls:[ fo:) rl:( n4:| ss:| de:[ js:| ch:? sh:( mo:) zu:|

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Vinzenz Mai, 29. 06. 2006, 22:17

Hallo Richard,

»» »» Nö, meine ich nicht. Du hast aber typischerweise ein Formularelement oder mehrere Formularelemente, das für das Absenden verantwortlich ist (sind). Überprüfe, ob eines davon genutzt wurde.
»»
»» Wenn_ es ein <input type="submit"> wäre, hätte value ja bekanntlich noch andere Folgen.

Nein. Ist mir nicht bekannt. Welche?

»» Das kann´s doch auch noch nicht sein?

Was denn? Ich nutze genau diese Methode sehr ausgiebig. Mit <input type="submit">. Wo siehst Du ein Problem?


Freundliche Grüße

Vinzenz

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: dedlfix, 29. 06. 2006, 23:04

echo $begrüßung;

»» Ich nutze genau diese Methode sehr ausgiebig. Mit <input type="submit">. Wo siehst Du ein Problem?

Es ist nicht eindeutig spezifiziert, dass mindestens ein Submit-Button-Name-Value-Paar (so name und value vorhanden sind) mitgeliefert werden muss. Es ist eigentlich nur die Rede davon, dass "successful controls" zu übertragen sind. Ist nun ein Button "successful", der nicht gedrückt wurde, weil das Formular per Enter abgesendet wird? FF und Opera  beantworten diese Frage mit einem Ja, wobei sie sich wohl auch nicht einig sind, welcher Button es sein soll, wenn es mehrere davon gibt, der IE beantwortet sie mit Nein.

Ein <input type=hidden ...> ist eine Alternative, die mit jedem Browser funktionieren sollte.


echo "$verabschiedung $name";

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: Richard, 30. 06. 2006, 07:20

Hallo Vinzenz,

»» »» Wenn_ es ein <input type="submit"> wäre, hätte value ja bekanntlich noch andere Folgen.
»»
»» Nein. Ist mir nicht bekannt. Welche?

<input type="submit" name="submit" value="Absenden"> bewirkt einen Submit-Button mit der Aufschrift "Absenden" ...

»» »» Das kann´s doch auch noch nicht sein?
»»
»» Was denn? Ich nutze genau diese Methode sehr ausgiebig. Mit <input type="submit">. Wo siehst Du ein Problem?

... und dieser value wird übermittelt. Ich halte es für plump, die übermittelten Daten anschließend auf ein "Absenden" zu überprüfen.

Und was ist mit der von dedlfix angesprochenen Problematik? So ganz schlau bin ich aus seinen Ausführungen nicht geworden. Aber was ist denn nun, wenn jemand das Formular mit der ENTER-Taste abschickt?

Beste Grüße

--
Meine bescheidene Internetpräsenz - Gästebucheinträge erwünscht!

Das beste Freeware-Programm der Welt
Selfcode: ie:( fl:| br:^ va:| ls:[ fo:) rl:( n4:| ss:| de:[ js:| ch:? sh:( mo:) zu:|

nach obennach unten

HTTP_REFERER in Zusammenhang mit Formularüberprüfung

Die folgende Nachricht zum Thema stammt von: dedlfix, 30. 06. 2006, 08:41

echo $begrüßung;

»» Und was ist mit der von dedlfix angesprochenen Problematik? So ganz schlau bin ich aus seinen Ausführungen nicht geworden. Aber was ist denn nun, wenn jemand das Formular mit der ENTER-Taste abschickt?

Erstelle dir ein Formular, das mindestens ein Texteingabefeld und mehrere Submit-Buttons enthält. In einem weiteren Versuch solltest du auch mal einen Submit-Button vor das Eingabefeld setzen. Setze den Cursor in das Texteingabefeld und drücke Enter. Schau dir die vom Browser gesendeten Daten an. Führe diese Versuche mit IE, FF und Opera durch. Außerdem solltest du die von mir erwähnte/verlinkte Stelle der HTML-Spezifikation ansehen. Danach, meine ich, solltest du meine Ausführungen besser verstehen.


echo "$verabschiedung $name";

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Juni

© 1998-2006 Seite Impressum, Software: Classic Forum