Das eindeutige Formulartoken deaktiviert das Multitasking für den Benutzer

Wenn ich meine Site und Benutzer vor Cross Site Forgery (CSRF) -Angriffen schützen möchte, kann ich ein eindeutiges Token generieren$token = md5( time() * rand ); aufjede Seite das hat eine form. Das Token wird in einem versteckten Eingabefeld übergebenecho '<input type="hidden" name="token" value="'.$token.'">'; und gleichzeitig in einer Sitzungsvariablen gespeichert$_SESSION['token'] = $token;.

Ich werde prüfen, ob ein Formular eingereicht wurdeif($_POST['token'] == $_SESSION['token']) und gehen Sie entsprechend vor.

Einige Benutzer können jedoch Multitasking durchführen. Das ist etwas, was ich gerade mache, während ich das poste.

Während ich meinen Beitrag verfasse, öffne ich verschiedene Fenster / Tabs, um möglicherweise Informationen zu recherchieren oder andere Fragen zum Stapelüberlauf zu untersuchen. Mit dem Stapelüberlauf kann ich das Formular ohne Probleme senden.

Aber wenn ich das auf meiner Website tun würde, würde ich andere Seiten durchsuchen, während ich noch einen Beitrag / ein Formular verfasse - my$token wird jedes Mal neu generiert, wenn ich eine andere Seite von meiner Website aufrufe. Das Versteckte macheninput Token auf dem Formular, an dem ich arbeite und das ich eventuell einreichen möchtefalsch, weil es nicht mit dem übereinstimmt$_SESSION['token'] Variable nicht mehr, die neu generiert wurde, als ich eine andere Seite besuchte ...

Irgendwelche guten Ideen, wie man dieses Problem verhindert, oder irgendwelche besseren Lösungen, um CSRF an erster Stelle zu stoppen?

Ich möchte meinen Benutzern die Möglichkeit geben, mehrere Aufgaben auszuführen UND möchte vor CSRF geschützt werden ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage