2014-01-06 5 views
0

새 프로젝트에서 CSRF 보호를 구현하려고했습니다. 모든 양식에 대해 세션 토큰을 작성하여 동일한 작업을 수행했으며 토큰은 양식의 숨겨진 필드에 저장됩니다. 양식이 제출 될 때마다 POST의 토큰과 세션의 토큰이 같은지 확인합니다. 동일한 경우 필요한 조치가 수행되고 세션 토큰이 업데이트됩니다.세션 토큰을 사용하여 CSRF 보호 구현

잘 작동하지만 제출 된 페이지를 새로 고침 할 때 실제 문제가 발생합니다. 그런 다음 토큰 불일치가 발생합니다.

제 질문은 모든 양식 제출시 토큰을 업데이트하지 않고 각 양식에 대해 단일 토큰을 사용하여 안전하게 보관합니까? 이것이 CSRF를 예방할 수 있습니까?

답변

0

예, CSRF 토큰을 업데이트 할 필요가 없습니다. 사용자 세션별로 고유해야합니다.

공격자가 숨겨진 양식 필드의 값을 읽을 수있는 방법이 없으므로 세션 중에 동일한 값을 다시 사용할 수 있습니다. 이 값을 갱신하면 추가 보안이 수행되지 않습니다.

그러나 사용자 세션 당 고유 값이어야합니다. 서로 다른 사용자는 서로 다른 토큰을 가져야하며 동일한 사용자가 다시 로그인하면 이전 토큰을 만료시키는 것이 좋습니다.

+0

감사합니다. – g4GG