2013-03-12 2 views
2

우리는 최근 응용 프로그램 aganist Appscan를 실행하고 몇 페이지에 보고서를 보여줍니다 다음과 같은 변경은 원래 요청에 적용했다 :에asp.net 및 크로스 사이트 요청 위조

  • 설정 HTTP 헤더 ' http://bogus.referer.ibm.com '
    추론 :
    동일한 요청이 다른 세션에서 두 번 보내졌으며 동일한 응답이 수신되었습니다. 이것은 동적 매개 변수가 없음 (세션 식별자가 쿠키로만 전송 됨)이므로 응용 프로그램이이 문제점에 취약하다는 것을 나타냅니다.

나는 이것을 처리하는 방법에 대해 약간 혼란 스럽다. 단지 Request.UrlReferrer를보고 URL에있는 것과 동일한 호스트인지 확인해야한다. 그렇지 않으면 이것을 처리하는 더 좋은 방법이 있는가?

감사합니다.

+2

모든 브라우저가'Referer' 헤더를 보내는 것은 아닙니다. CSRF 토큰을 사용해야합니다. – SLaks

+3

Referrer는 문제와 직접 관련이 없습니다. AppScan은 실패한 시점에 다른 리퍼러로 요청을 시도하고있었습니다. 그 비트를 무시하십시오. 'Reasoning'은 문제를 훨씬 잘 설명합니다. – bobince

+0

다시 한 번보고 난 후에 무슨 일이 일어날 지 알 것입니다. Logout에는 Session.Abandon()이 있지만, 사용자가 아무 것도하지 않고 세션이 만료되는 경우 포기가 없었으며, 아마도 appscan이 세션 쿠키가 삭제되지 않았지만 동일한 응답을 두 번 가져올 수 있었던 방법 일 수도 있습니다. 다시 픽업 – Paritosh

답변

2

리퍼러 헤더는 아주 쉽게 스푸핑 될 수 있습니다. 요청을 보낸 CSRF 토큰 (Synchronizer Token Pattern 권장)을 사용해야합니다. 너는 확실히 읽을만한 an awesome resource at OWASP이있다. 행운을 빕니다!

+2

Freedom_Ben의 답변 외에도 MVC를 사용하는 경우 구운 상태로 사용이 간편한 AntiForgeryToken을 사용할 수 있습니다. 기본적으로 Html 도우미를 사용하여 토큰을 만든 다음 토큰을 확인할 수있는 post 메서드에 특성을 추가합니다. 자세한 정보는 다음에서 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper.antiforgerytoken(v=vs.100).aspx –