답변

2

현재 ASP.NET MVC에서 AntiForgery 토큰을 구현하는 방법은 숨겨진 입력 필드를 생성하고 쿠키를 설정하는 HTML 도우미에 의존합니다. 이 도우미를 사용할 수 없다면이 기능을 직접 수행해야합니다.

+0

안녕 대린에 지정된 도메인에 AJAX 요청을 할 수있을 것입니다. 빠른 답변 주셔서 감사합니다. 문제는 응용 프로그램을 PhoneGap에 배포하려는 경우 ASP.NET MVC를 사용할 수 없다는 것입니다. HTML을 생성하기 위해 서버에 의존하지 않고이 기능을 구현하는 방법을 알고 있습니까? –

+0

서버 측 스크립트 없이는이 기능을 구현할 수 없습니다. 이것은 의미가 없습니다. 위조 방지 토큰의 요점은이 토큰을 생성하는 서버를 갖는 것입니다. –

+0

확인. 내가 토큰을 생성하고 클라이언트에게 반환 ASP.NET WebAPI에 대한 일부 방법으로 AJAX 요청을하게 간단한 HTML 페이지를 만드는 아이디어가있다. WebAPI에 대한 다음 요청시이 토큰을 사용할 수 있습니까? 그런 것. 어떻게 생각해 ? –

3

내가 서버 생성 페이지가없는 위조 방지 토큰 구현하는 안전한 방법이 생각 :

  1. 는 HTTP 안티 위조 토큰 값 만 쿠키를 설정하는 컨트롤러 또는 웹 API 메소드 만들기가 위조 토큰 값 (JSON)을 반환합니다. Html.AntiForgeryToken()에 의해 호출되는 public 메서드 AntiForgery.GetTokens()이 있습니다. 이 메서드를 사용하여 C# 코드의 토큰 값을 읽습니다.
  2. phonegap 앱의 javascript에서 컨트롤러 또는 웹 API 메소드 (1 단계)를 호출하고 반대로 위조 토큰을 가져 와서 javascript (_RequestVerificationToken이라는 숨겨진 입력 필드 사용)를 사용하여 양식에 추가하십시오.
  3. 양식을 [ValidateAntiForgeryToken]과 (과) 일치하는 메서드에 제출하면 적절하게 유효성을 검사해야합니다.

Microsoft는 매우 유사한 예제 구현 here을 제공합니다 ('Anti-CSRF and AJAX'절 참조).

위조 방지 토큰을 설정하고 반환하는 컨트롤러 메서드가 있지만 웹 브라우저에서 same origin security policy을 적용하기 때문에 표면적으로 이것이 안전하지 않은 것처럼 보일 수 있으므로 XSRF 공격을해서는 안됩니다.

폰갭이는 same origin policy (see here)이 적용되지 않습니다 로컬 파일을 사용하므로 귀하의 config.xml에 (see <access origin="..." /> here)