2011-01-17 3 views
2

AJAX 응답 페이지 인 일반 HTML 페이지 및 페이지 인 페이지 A가 있습니다. 그리고 나는 토큰에 의한 CSRF 공격을 막고 싶다. 이 메서드는 autocomplete 폼에 사용합니다.이 메서드는 피곤하지만 유효성 검사가 첫 번째 제안 이후에 계속 실패하기 때문에 동일한 토큰을 여러 번 사용할 수 있습니까 (물론 세션은 한 번만 설정 됨).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를 사용하여 변화를 프로그래머.

페이지 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

관련 문제