2011-11-09 3 views
5

우리는 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 % 이상에서 작동하지만 일부 사람들에게는 효과가없는 이유를 정확히 알 수 없습니다.

생각하십니까?
감사합니다.

+0

인증을 사용하지 않는 경우 위조 방지 토큰을주의해야하는 이유는 무엇입니까? CSRF 공격의 목적은 공격자가 사이트에서 인증 된 일부 사용자를 대신하여 작업을 수행하는 것입니다. 그리고 사이트가 인증을 사용하지 않는다면 CSRF는 무의미 해 보입니다. –

+0

인증을 사용 중이며 양식 인증이 아닙니다. – pbz

+0

어떤 종류의 인증을 사용하고 있습니까? –

답변

0

일부 사용자는 항상이 문제가 있습니까? 아니면 그냥 시간이야? 또한, 모든 시간에 일부 메소드에 대해 작동합니까? 아니면 동일한 액션 메소드에 대해 일관성이 없습니까? 아약스 전화 있어요? 기본 위조 토큰 구현은 AJAX 호출을 처리하지 않습니다. 하지만 사용자 정의 코드를 작성하여 작동하게 할 수 있습니다.

+0

그 이유는 대답이 아닌 주석으로 나타났습니다. –

+0

답장을 보내 주셔서 감사합니다! 1) 일부 사용자는 항상 가지고있는 것처럼 보이지만 내가 접촉 할 수 있었던 한 사용자는 다소 기술적이지 않기 때문에 너무 많이 조사 할 수 없었습니다. 로그에 IP와 오류가 표시되므로 합법적 인 것입니다. 2) 해당 페이지에 AJAX 호출이 없습니다. 나는 그 한계를 알고 있고 필요한 곳을 돌아 다녔다. – pbz

0

폼 내부에 위조 방지 토큰을 추가하고 있습니까? 위조 방지 토큰은 쿠키가 아닌 숨겨진 HTML 요소를 통해 클라이언트에 저장됩니다. 다른 질문은 그들이 사용하는 브라우저 버전이 무엇입니까? 최신 버전으로 업그레이드 할 수 있습니까?

@using (Html.BeginForm()) 
    { 
     @Html.AntiForgeryToken()... 
+0

예, 토큰을 양식에 포함합니다. 그들이 사용하는 버전을 모르지만 Internet Explorer를 사용하고 있습니다 (연락 할 수있는 한 사람에 따르면). 이것은 다른 사람들에게도 일어 났지만 불행하게도 나는 브라우저 버전을 기록하지 않았다.더 많은 데이터를 얻으려면 다시 로그인해야합니다. 나는 다른 사람들이 전에이 문제를 보길 바랬다. – pbz