2 Stimmen

Kann das PHP-Session-Token mehrfach verwendet werden?

Ich habe Seite A, die eine normale HTML-Seite ist, und Seite A, die eine AJAX-Antwortseite ist. Und ich möchte CSRF-Angriffe durch Token verhindern. Sagen wir, ich verwende diese Methode für ein Autovervollständigungsformular, ist es möglich, dasselbe Token mehrmals zu verwenden (natürlich ist die Sitzung nur einmal festgelegt), weil ich diese Methode müde, aber die Validierung halten nach dem ersten Vorschlag (offensichtlich das Token hat sich geändert, irgendwie) fehlschlagen

Seite A

<?php
session_start();
$token = md5(uniqid(rand(), TRUE));
$_SESSION['token'] = $token;
?>
<input id="token" value="<?php echo $token; ?>" type="hidden"></input>
<input id="autocomplete" placeholder="Type something"></input>
....

Das Formular wird bei jeder Änderung mit Jquery automatisch übermittelt.

Seite B

<?php
session_start();
if($_REQUEST['token'] == $_SESSION['token']){
echo 'Im working fine';
}
?>

3voto

Chris Punkte 1088

Es wäre möglich, dasselbe Token mehrmals zu verwenden - solange $_SESSION['token'] unverändert bleibt.

Jedes Mal, wenn Seite A aufgerufen wird, wird das Token überschrieben. Wenn Sie das gleiche Token verwenden möchten, können Sie es versuchen:

<?php
session_start();
if( !isset($_SESSION['token']) ){
  $_SESSION['token'] = md5(uniqid(rand(), TRUE));
}
<input id="token" value="<?php echo $_SESSION['token']; ?>" type="hidden" />
....

Ich würde auch nicht $_REQUEST verwenden, da dies Ihren Quelltext zweideutig macht - ich würde entweder $_POST oder $_GET verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X