2011-05-01 2 views
2

AntiCSRF HTTPModule을 설치했지만 Ajax와 함께 사용해야합니다.
토큰 필드 이름 : RaiseException.
쿠키 이름 : __CSRFCOOKIE.
ajax POST를 사용하여 토큰 필드 값을 수동으로 보내야합니까? 그렇지 않으면 수행 할 작업이 있습니까?
쿠키를 여기에 사용했기 때문에 같은 이름과 같은 값을 가진 쿠키를 만든 사람이 숨겨진 파일에 표시된 값을 서버에 보내고 데이터를 가져 오지 않거나 이에 대한 제한이 있습니까? !
감사합니다.ajax와 AntiCSRF 사용

+0

누구든지, 뭐든지!? –

답변

0

사용중인 특정 CSRF 모듈에 익숙하지 않습니다. ASP.Net에는 anti-CSRF 지원이 내장되어 있지만 AJAX와는 어려움을 겪습니다.

대부분의 사이트는 인증을 위해 보안 HTTP 전용 쿠키를 사용합니다. 모든 브라우저는 동일한 원본 정책을 지원합니다. 즉, 쿠키를 만드는 사이트 만 액세스 할 수 있습니다.

CSRF 공격은 해커가 쿠키를 볼 필요가 없기 때문에 작동합니다. 사용자의 브라우저가 요청에 따라 쿠키를 보냈기 때문입니다. 그래서 해커는 사이트에 데이터를 전송하는 양식을 작성

<form action="yoursite.com/userAdmin/Create"> 
    <input type="text" name="username" value="hackerUser" /> 
    <input type="text" name="rights" value="godlike" /> 
    ... 
</form> 

해커는 사이트의 관리자되지 않습니다,하지만 그들은 그들을 위해 물건을로하는 사용자를 속일 수 있습니다.

대부분의 anti CSRF 보호는 동일한 방식으로 작동합니다. 사이트에서 액세스 할 수 있지만 해커가 스푸핑 할 수없는 추가 토큰을 갖도록 POSTED 양식 데이터를 요구합니다.

그래서 .Net의 기본 구현은 숨겨진 입력에 동일한 토큰 인 토큰이있는 쿠키를 추가 한 다음 일치하는지 확인합니다. 해커는 쿠키를 볼 수 없으므로 숨겨진 입력을 재현 할 수 없습니다.

이 AJAX는 두 가지 이유로 호출에 대한 문제 :

  • 닷넷 일부 자바 스크립트가 AJAX 호출로 그를 얻기 위해 요구되는 의미, 숨겨진 입력 태그로 토큰을 생성합니다.
  • .Net의 토큰에 대한 점검은 양식 입력이라고 가정합니다. 즉, JSON 호출이 양식을 잘못된 형식으로 전달한다는 의미입니다.

토큰의 필드 이름 값을 수동으로 AJAX 호출에 추가하고 양식 데이터를 보내고 있는지 확인하십시오.