CSRF (Cross Site Whomery) 공격으로부터 사이트와 사용자를 보호하려는 경우 양식이있는 모든 페이지에 고유 토큰 $token = md5(time() * rand);
을 생성 할 수 있습니다. 토큰은 숨겨진 입력 필드 echo '<input type="hidden" name="token" value="'.$token.'">';
에 제출되고 동시에 세션 변수 $_SESSION['token'] = $token;
에 저장됩니다.고유 한 양식 토큰이 사용자의 멀티 태스킹을 비활성화합니다.
제출 된 양식이 if($_POST['token'] == $_SESSION['token'])
인지 확인하고 이에 따라 진행합니다.
그러나 일부 사용자는 멀티 태스킹을 할 수 있습니다. 이것은 내가 실제로 게시하는 동안 지금 실제로하고있는 것입니다.
내 게시물을 작성하는 동안 정보를 조사하거나 스택 오버플로에 대한 다른 질문을 보려면 다른 창/탭을 열어보십시오. 스택 오버플로를 사용하면 문제없이 양식을 제출할 수 있습니다.
하지만 내 사이트에서이 작업을 수행하는 경우 - 게시물/양식을 작성하면서 다른 페이지를 탐색하는 것을 의미 - 내 웹 사이트에서 다른 페이지를 가져올 때마다 내 $token
이 재생성됩니다. 나는 결국 작업하고 있어요 양식에 숨겨진 input
토큰을 만드는 것은 늘 내가 다른 페이지를 방문했을 때 재생되어 더 이상 $_SESSION['token']
변수를 일치하기 때문에 ... 잘못된를 제출 할
모든 좋은에게 어떻게이 문제를 예방할 수있는 아이디어 또는 우선 CSRF를 중단시킬 수있는 더 나은 해결책이 있습니까?
나는 다중 작업에 내 사용자를 허용 할 및 CSRF으로부터 보호 할
...
내가 토큰이 전혀이를 방지하기 위하여려고하는 방법을 모르겠습니다. – John
CSRF가 GET 또는 POST 요청에서 사용될 수 없도록 막기 위해 고유 한 토큰이 사용되어야합니다. –
@ RaymondN : 예, 그게 정확히 내가하고있는 일입니다. 맞습니까? – olli