질문 : in this post에 대해 적절한 대답을 찾을 수 없어 불행하게도 다시 묻습니다.
웹 응용 프로그램에서 CSRF 공격을 막아야합니다. 그래서 나는이 같은의 index.php 주 파일 의 상단에 토큰을 생성 :일부 브라우저에서는 원격 서버의 PHP 세션 값이 변경되지 않습니다.
<?php
session_start();
$_SESSION['token'] = md5(uniqid());
?>
을 그리고 다음과 같이 처리 파일로 전송하는 형태의 숨겨진 필드에 넣어 :
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>" />
을 로컬에서 처리 파일의 코드를 실행하면 모든 내용이 정상이며 모두 $ _POST [ 'token']과 $ _SESSION [ 'token']이 동일합니다. 아래 코드를 실행하면 확실합니다.
<?php
session_start();
echo $_SESSION['token'].'<br />'.$_POST['token'];
// Out put is like lines below:
// 7cf64efc6f8ad5bdf9c04e57feb7d1f9
// 7cf64efc6f8ad5bdf9c04e57feb7d1f9
?>
원격 호스트에서 프로젝트를 업로드 할 때 같은 방식으로 작동해야합니다. 그러나 그것은 인터넷에서 이상한 행동을합니다. $ _POST [ 'token'] 및 $ _SESSION [ 'token']은 웹상에서 더 이상 동일하지 않습니다. $ _SESSION [ 'token'] 레크리에이션 코드없이 처리 파일이 변경되었습니다!
<?php
session_start();
echo $_SESSION['token'].'<br />'.$_POST['token'];
// Out put is like lines below:
// 22a0331a5ef07b96d95e2e0f6b98e282
// f859cc725cf7c7026aaaf84a48779199
?>
낯선 지점이 알 수없는 방식으로 이전 IE에 있었던,하지만 지금은 IE에서 발생하지 않습니다,이 시간은 크롬에서 발생합니다. Firefox에는이 문제도 없습니다.
나는 무엇이 문제인지 모른다. 아무도 적절한 답을 알려주지 못했습니다.
제발 도와주세요 ...
세션이 재설정 된 것으로 생각합니다. 코드를 정확히 게시 할 수 있습니까? –
올바르게 생각한다면 왜 모든 브라우저에서이 문제가 발생하지 않습니까? –
우리에게이 사실을 보여주는 증거가 없습니까? 그래서 우리는 이것을 올바른 것으로 간주 할 수 있고 코드를 다시 검사 할 수 있습니다. 또한 아무도 다른 문제를보고하지 않습니다. –