Sönke Tesch: Sicherheit, $_POST, $_SERVER["HTTP_REFERER"], register_globals

Beitrag lesen

Wenn es hingegen nur um eine Ablaufprüfung geht, d.h. daß niemand ein Formular zweimal abschickt oder zwischen dem dritten und vierten Formular einzusteigen versucht, kannst Du über eindeutige Kennungen im Formular diesen Ablauf erzwingen.

Kannst Du bitte noch beschreiben (es genügt auch ein Link dazu, wenn es eine bestimmte Prozedur ist) was Du mit "eindeutiger Kennung" meinst?

Eine Zufallszahl aus einem angemessen großen Wertebereich. Je größer der Bereich, desto schwieriger ist es, die richtige Nummer zu erraten.

Für jedes ausgegebene Formular erzeugst Du so eine eindeutige Kennung. Diese gibst Du einmal in einem <input>-hidden-Element dem Formular mit auf den Weg, zum zweiten speicherst Du sie in einer internen Tabelle.
Beim Empfang eines ausgefüllten Formulars löschst Du die in den Daten mitgelieferte Kennung wieder aus der Tabelle.

Damit ein Formular gültig ist, muß es lediglich eine bekannte Kennung besitzen. Ein Formular mit unbekannter Kennung ist entweder gefälscht (weil Du die Kennung garnicht ausgegeben hast) oder wurde doppelt abgeschickt (weil Du die Kennung zwar ausgegeben, aber ja schon nach ersten Empfang wieder gelöscht hattest).

Hier im Forum wird diese Methode angewandt, wirf mal einen Blick in den Quelltext dieser Seite.

Quereinstieg kannst Du verhindern, indem Du in dieser Kennung einen verschlüsselten bzw. nicht sofort offensichtlichen Wert einfügst, der die bereits abgearbeiteten Formulare kennzeichnet.
Das ist aber sicherlich weniger oft von Bedeutung, da sich die Formularabfolge in der Regel schon aus den bereits eingegebenen Daten ergibt.

Gruß,
  soenk.e