2011-01-17 3 views
2

J'ai obtenu la page A qui est une page HTML normale et une page qui est une page de réponse AJAX. Et je veux empêcher les attaques CSRF par des jetons. Disons que j'utilise cette méthode pour un formulaire de saisie semi-automatique, est-il possible d'utiliser le même jeton plusieurs fois (bien sûr, la session n'est définie qu'une fois) parce que j'ai fatigué cette méthode mais la validation échoue après la première suggestion changé, en quelque sorte)Le jeton de session PHP peut-il être utilisé plusieurs fois?

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

La forme est autosubmitted chaque fois un changement à l'aide theres Jquery.

page B

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

Répondre

3

Il serait possible d'utiliser les mêmes Jeton plusieurs fois - aussi longtemps que $ _SESSION [ 'jeton'] reste inchangé.

Chaque fois que la page A est appelée, le jeton est écrasé. Si vous voulez utiliser le même ordre d'idées que vous pouvez essayer:

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

Je voudrais également pas utiliser la variable $ _REQUEST qui laisse la source ambiguë - j'utiliser soit $ _POST ou $ _GET.

+0

ça marche! Je vous remercie – kornesh

Questions connexes