Formularbestätigung aus Redirect erkennen

HeinzKetchup

Well-Known Member
#1
Hallo Leute

Wie kann man erkennen ob ein Formular "erneut" bestätigt wurde durch eine zurückbuttonbestätigung im Browser z.b.
Gibt es da eine einfache möglichkeit?


Lg
Heinzketchup
 

HeinzKetchup

Well-Known Member
#2
Ausser eben wenigstens n kleines Captcha einzubauen mein ich.
Also für ein Gästebuch, sorry hab mich sehr kurz gefasst.
Problem:
Gästebuch eintrag geschrieben, benutzer klickt zurück und bestätigt erneut - blubb eintrag zweimal drinn.
wie lösen? mit kleinem Captcha OOOOODDDDDÄÄÄÄÄHHR was sonst so?
 

Mat

Well-Known Member
c-b Experte
#3
Hängt davon ab, wie die Seite aufgebaut ist.

Grundsätzlich würde ich sagen: Token für jede POST-Transaktion. Wenn Token ungültig (weil schon verbraucht), dann einfach nur zur Seite navigieren. Kannst du wunderbar mit CSRF- und XSRF-Schutz kombinieren.
 

HeinzKetchup

Well-Known Member
#5
Nochmal damit wir uns verstehen
Ein TOKEN ist doch jetzt nicht mehr als eine Variable die sich mein System, in dem Fall PHP merkt, über die sessionvariable und den ich bei erstem seiten aufruf z.b. den wert null gebe.
Ab dann soll mein formular immer diese 0 mit übermitteln
Und in dem moment wo das Formular benutzt wird erhöhe ich den wert dieser vom system als bleibend gehandhabten variable z.b. um 1.
Dann würde bei erneuter Formularübertragung durch den zurückbutton in der session variable, genannt token oder anderer name, bereits 1 drinn stehen, doch das erneute absenden würde die werte von vorher und somit noch den wert 0 haben. Eine einfache if klausel würde das hiddene feld mit dem aktuellen wwert vergleichen und feststellen, 'hey - das ist nicht mehr gleich, das mach ich nicht'

Das meinst du mit dem wort token richtig?
 

Mat

Well-Known Member
c-b Experte
#6
Jo, sowas wäre zum Beispiel eine leichte Lösung für's Gästebuch.

Bei CSRF-Schutz läuft das so ähnlich ab, wie du das beschrieben hast (das schützt zum Beispiel davor, direkt POSTs auf deine Seite durchzuführen, ohne dafür das Formular auf deiner Seite zu verwenden). Es hält natürlich keine Bots davon ab, das Formular auszufüllen (dagegen könnten Honeypots helfen.. hidden Felder, in denen nur etwas bestimmtes oder auch mal garnichts stehen darf).

Sonstiges Alternativen:
  • Zeitstempel beim Posten in die Session setzen und prüfen, ob der letzte Beitrag mindestens x Sekunden zurückliegt
    • Problem: wenn jemand 30 Minuten später auf zurück klickt, kommt trotzdem der Doppelpost
  • Doppelposts grundsätzlich verhindern (2 Posts vom gleichen User direkt hintereinander)
    • Problem: wenn zwischendurch jemand anderes was hinterlässt, wird trotzdem nochmal gepostet
  • Inhaltsabgleich der letzten x Einträge

Kannst dir ja überlegen, was für dein Gästebuch am besten passt. Gibt sicher noch viele weitere Möglichkeiten.
 
#8
Nur als kleine Info, ein Captcha würde ich dennoch (wenn auch nervig) drin lassen, da du sonst wahrscheinlich sehr viel Spam bekommen wirst. Es sei denn User können nur einen Eintrag schreiben, wenn sie sich vorher angemeldet haben :)
 

HeinzKetchup

Well-Known Member
#9
Ich schreib das vor und bind es erstmal nur nicht ein, ich schau dann mal und zur Not setz ichs in den code zusammen mit einer bestätigung zum freischalten, die zeile hab ich in meiner datenbank eh angelegt.ich kann mir das momentan nur nicht vorstellen das das ein problem wird aber das mag unerfahrenheit sein
 
Oben