우리는 MVC3을 사용하는 웹 사이트와 양식 인증에 전혀 의존하지 않는 사용자 정의 인증 방법을 사용합니다. Web.config의에서 우리는 폼 인증이없는 AntiForgeryToken
<authentication mode="None"></authentication>
을 설정하고 우리는 절대 사용하지 마십시오/코드 어디 HttpContext.User을 설정합니다.
if (String.Compare(filterContext.HttpContext.Request.HttpMethod, "post", true) == 0)
{
var forgery = new ValidateAntiForgeryTokenAttribute();
forgery.OnAuthorization(filterContext);
}
입니다 : 우리는이 코드 OnAuthorization의 모든 위조 방지 검사를 중앙 집중화
A required anti-forgery token was not supplied or was invalid
: @ Html.AntiForgeryToken()를 사용하는 경우에 사용자가이 오류 메시지를 가져옵니다 때 문제는 여기서 예외가 발생합니다. 응용 프로그램 풀이 재생 될 때 새 키가 생성되지 않도록하려면 defined a machineKey in web.config이 있어야합니다. 이것은 문제를 해결하지 못했습니다.
다음으로 클라이언트의 브라우저가 쿠키를 보내지 않는 것으로 생각됩니다. Google은 쿠키 로깅을 시작했으며 어떤 경우에는 RequestVerificationToken_Lw 쿠키가 전송되었지만 다른 쿠키는 그렇지 않은 것으로 나타났습니다. Google 애널리틱스에서 작성한 것과 같은 다른 쿠키는 정상적으로 전송되었지만 브라우저의 일부 쿠키를 제거하고 다른 쿠키를 남겨 둘 수 있습니까?
anti-forgery token depends on forms authentication처럼 보입니다. 이 경우인가요? 신뢰할 수있는 방법으로 양식 인증을 사용하지 않을 때 AntiForgeryToken을 계속 사용하는 방법. 위에서 설명한 방법은 사례의 90 % 이상에서 작동하지만 일부 사람들에게는 효과가없는 이유를 정확히 알 수 없습니다.
생각하십니까?
감사합니다.
인증을 사용하지 않는 경우 위조 방지 토큰을주의해야하는 이유는 무엇입니까? CSRF 공격의 목적은 공격자가 사이트에서 인증 된 일부 사용자를 대신하여 작업을 수행하는 것입니다. 그리고 사이트가 인증을 사용하지 않는다면 CSRF는 무의미 해 보입니다. –
인증을 사용 중이며 양식 인증이 아닙니다. – pbz
어떤 종류의 인증을 사용하고 있습니까? –