2010-02-08 22 views
3

우리는 ASP.NET MVC를 사용하여 구축 한 응용 프로그램에 대해 몇 가지 침투 테스트를 수행했으며 Form의 AntiForgeryToken 값을 여러 번 다시 계산하여 수행 한 권장 사항 중 하나는 일회 사용 후 만료되지 않습니다.각 확인 후에 ASP.NET MVC의 AntiForgeryToken 값을 변경할 수 있습니까?

동기화 토큰 패턴 주위 OWASP recommendations에 따르면

"일반적으로, 개발자는 현재 세션에 대해 한 번이 토큰을 생성 할 필요가 없다."

ASP.NET MVC AntiForgeryToken이 어떻게 작동하는지 생각해보십시오.

우리가 전투에서 싸워야 할 경우 AntiForgeryToken이 각 검증 후에 새로운 값을 재생성 할 수 있습니까?

+0

특히 많은 사이트에서 단일 페이지에서 여러 번 AJAX 호출을해야하는 이유가 확실하지 않습니다. _Synchronizer Token Pattern_은 세션에 대해 사용자에게 고유 한 토큰 (AntiForgeryToken이하는 것)을 검사하는 것이 아니라 요청이있을 것으로 예상되는 페이지와 관련된 토큰을 검사한다는 것을 의미합니다 와라. 'ViewState'는 WebForms 페이지에서 그렇게했지만 MVC에서는 더 복잡합니다. – Keith

답변

7

위조 토큰은 단지 anti-XSRF 토큰입니다. 특히 이 아닌 일회용 넌스입니다. 응용 프로그램에 대해 일회용 넌센스가 필요한 경우이 용도로 위조 토큰을 사용할 수 없습니다. 이를 위해 기본으로 제공되는 기능은 없습니다.

-1

아마도 the three parameters constructor을 사용하여 AntiForgeryToken을 사용할 수 있습니다.

소금을 사용하는 것이 항상 권장되지만 도메인 및 경로별로 토큰을 제한하면 토큰이보다 안전하고 페이지별로 고유하게됩니다.

XSS 취약점이없는 경우이 문제는 웹 사이트에서 큰 혼란이 될 수 없습니다. //이 글을 작성 했습니까? 확실히 나는 문제를 잘 읽지 못했다.

건배!

+0

고마워요. 그렇다고해서 요청 당 토큰 값 문제는 실제로 해결되지 않습니다. – jmcd

+0

죄송합니다. _에 대해 -1 "XSS 취약점이 없다면이 문제는 귀하의 웹 사이트에서 큰 혼란이 될 것입니다."_ 그저 잘못된 것입니다. CSRF 공격은 애플리케이션에 완전히 외부적일 수 있습니다. 사용자는 유효한 인증 쿠키를 가지고 있어야합니다. – Keith

관련 문제