2009-10-31 5 views
0

ASP.NET MVC의 AntiForgeryToken 기능이 사이트 간 공격을 막아 준다는 것을 알고 있습니다.ASP.NET MVC - AntiForgeryToken이 사용자가 게시 된 양식 값을 변경하지 못하게합니까?

그러나 POST 이전에 양식 값이 변경되는 것을 방지합니까?

예를 들어, 악의적 인 공격자는 등급 페이지에 항상 평가 된 엔티티 ID를 포함하는 숨겨진 필드가 있으며 자신의 엔티티를 인위적으로 높게 평가하도록 POST 요청을 만들 수 있습니다.

GET과 POST 사이의 양식 값이 변경되지 않았 음을 확인하는 가장 좋은 방법은 무엇입니까?

답변

3

AntiForgeryToken은 악의적 인 사이트가 사용자를 원본과 모양이 같아서 원래 사이트에 게시하는 양식으로 속일 수 없도록합니다. 설명하는 시나리오를 방해하지는 않습니다. 다음은 공격자가 토큰을 우회하기 위해 진행할 수있는 방법입니다.

  1. 해커가 양식에 GET 요청을 보냅니다.
  2. 그는 쿠키의 쿠키 및 수정 엔티티 ID와 같은 값을 갖는다 RequestVerificationToken 숨겨진 필드를 보내서 폼 작업을 처리하는 URL로 AntiForgeryToken
  3. 그 게시물 만 생성되는 쿠키의 값을 판독한다.

AntiForgeryToken을 사용하지 않은 것처럼 유일한 차이점은 해커가 토큰 값을 읽는 추가 GET 요청을 보내야한다는 것입니다.

공격자가 숨겨진 필드의 값을 수정하지 못하도록 방지 할 수있는 방법은 없습니다. 양식을 제출 한 사용자 (사용자를 투표하려면 인증을 받아야한다고 가정)가 그가 투표하는 엔티티 ID.

관련 문제