크로스 사이트 요청 위조를 방지하기 위해 일부 양식에서 AntiForgeryToken을 사용하기 시작했습니다. 그러나 나는 이상한 행동을하고 있는데, 이것이 버그인지 혹은 나에게 뭔가 잘못하고 있는지 명확히하고 싶었다. 내 양식에 Html.AntiForgeryToken()
통화를 사용하고 있습니다. 그런 다음 폼이 게시 할 작업 메서드에서 [ValidateAntiForgeryToken]
특성을 사용합니다. 나는이 시점에서 소금을 사용하지 않고있다.AntiForgeryToken 및 ValidateAntiForgeryToken에서 예기치 않은 동작이 발생했습니다.
내 생각에 __RequestVerificationToken
이라는 이름의 숨겨진 입력과 동일한 값을 포함해야하는 __RequestVerificationToken_Lw__
이라는 쿠키가 생성됩니다.
나는 그러나 경험하고 행동은입니다 :
- 쿠키는 항상 상관없이 페이지
- 숨겨진 입력 당신이 얻을 때마다 다른 값을 가진다을 GET 몇 번이나 같은 값이 없습니다 페이지
- ValidateAntiForgeryToken은 CSRF 시나리오의 다른 사이트에서도 항상 유효성을 검사합니다.
- 내가 외국 사이트에 숨겨진 입력 값을 변경하면, 토큰 (예상 행동을하지만, 숨겨진 입력/쿠키 값이 다를 때 왜 을 확인합니까?) 확인하지 않습니다
누구나 아이디어가 있습니까?
이 좋아, 단지 발견을 http://stackoverflow.com/questions/7186253/why-is-antiforgerytokens-hidden-field-not-same-as- 그것들은 다른 방식으로 직렬화된다는 것을 나타내는 my-cookies-on-my-machine이기 때문에 다른 값을 포함하고있는 것으로 보입니다. 그러나 이것이 왜 쿠키 값이 변경되지 않는지 설명하지 못합니다. (삭제하기 전까지 페이지를 다시 얻을 때까지 새로운 값이 생성됩니다.) 입력 값이 변경되거나 항상 유효성 검사를하는 이유는 무엇입니까? – coalvilledave
이 동작은 보안 요청으로 만 발생하는 것 같습니다. – coalvilledave