2011-01-17 11 views
2

AJAXの応答ページである通常のHTMLページとページであるページAを取得しました。そして私はトークンによるCSRF攻撃を防ぎたい。このメソッドをオートコンプリートフォームに使用すると、このメソッドを疲れたので、同じトークンを複数回使用することは可能です(もちろんセッションは1回のみ設定されます)。PHPセッショントークンは複数回使用できますか?

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

フォームが毎回autosubmittedされ、変更、何とか)

ページはjqueryのを使用して変更をtheresの。

ページB

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

答えて

3

同じトークンを複数回使用することが可能である - [「トークン」]限り$ _SESSIONを変更されません。

ページAが呼び出されるたびに、そのトークンが上書きされています。あなたは同じトークンを使用する場合は、試してみたいことがあります。それはあなたのソースがあいまいなままによう

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

私はまた、$ _REQUESTを使用することはありません - 私は$ _POSTや$ _GETのどちらかを使用します。

+0

ありがとうございました – kornesh

関連する問題