2014-07-10 1 views
0

Cross-Site Request Forgery을 이해하고 asp.net mvc에서 여러 블로그, 기사를 웹에서 찾아 볼 수 있지만 괜찮은 링크, asp.net 웹 응용 프로그램에서 CSRF 공격을 처리하는 데 유용한 솔루션이 없습니다. 에게 해커를 허용하는 내 웹 사이트에 security tool, 그 크로스 사이트 요청 위조를보고 및 위험 훔치거나 합법적 인 사용자를 가장하는 데 사용할 수있는 고객의 세션 쿠키를 조작 할 수교차 사이트 요청 위조 방지

을 보여주는를 실행 사용자 레코드를 보거나 변경하고 해당 사용자로 트랜잭션을 수행 할 수 있습니다.

제 질문은 ASP.NET 웹 응용 프로그램에서 CSRF 공격을 처리하는 방법입니다.

void ValidateRequestHeader(HttpRequestMessage request) 
{ 
    string cookieToken = ""; 
    string formToken = ""; 

    IEnumerable<string> tokenHeaders; 
    if (request.Headers.TryGetValues("RequestVerificationToken", out tokenHeaders)) 
    { 
     string[] tokens = tokenHeaders.First().Split(':'); 
     if (tokens.Length == 2) 
     { 
      cookieToken = tokens[0].Trim(); 
      formToken = tokens[1].Trim(); 
     } 
    } 
    AntiForgery.Validate(cookieToken, formToken); 
} 

하드 귀하의 웹 형태의 응용 프로그램에서 동일한 작업을 수행하는 것을해야하지 : 두 번째 링크를 보면

답변

0

웹 양식 앱의 ViewState mechanism can be used to protect against CSRF

ASP.NET에는 ViewState를 유지 관리하는 옵션이 있습니다. ViewState 은 서버에 제출할 때 페이지의 상태를 나타냅니다. 상태는 컨트롤이있는 각 페이지에 숨겨진 필드를 통해 정의됩니다. Viewstate는 공격자가 유효한 Viewstate를 위조하기 어렵 기 때문에 CSRF 방어로 사용할 수 있습니다. 공격자가 매개 변수 값을 얻거나 추측 할 수 있으므로 이 가능하기 때문에 유효한 Viewstate를 위조하는 것은 불가능하지 않습니다.

그것은 가능하다 : 현재 세션 ID가 의 ViewState에 추가 된 경우 그러나, 다음 각 viewstate가 고유하고

또한 CSRF에 다른 질문에 대한 CSRF

에 따라서 면역한다 해커가 사용자 레코드를 보거나 변경하고 해당 사용자로 트랜잭션을 수행하도록 허용하는 고객 세션 및 쿠키를 도용하거나 조작하는 행위

A CSRF attac k는 일반적으로 공격자가 아무것도 볼 수 없으며 로그인 한 사용자를 대신하여 요청을합니다. 그러나 현재 암호를 제출할 필요가없는 암호 변경 옵션이있는 경우 공격자는 피해자의 세션을 사용하여이 기능을 호출하여 나중에 공격자가 피해자로 직접 로그인 할 수 있습니다.

1

당신은 당신이 MVC의 Html.AntiForgeryToken() 검증의 논리를 참조 기록했다.

가능한 해결책은 대답 THIS을 참조하십시오.

0

Global.asax에서 처리 할 Asp.net 웹 양식 응용 프로그램에서 같은 해결책이 있습니까?

MVC에서는 이전 응용 프로그램이 단순한 웹 양식이고 전역 수준에서 이러한 공격을 막으려면 솔루션은 무엇이 될지 매우 간단합니다.