현재 저는 ASP .NET MVC 4 응용 프로그램에서 작업하고 있습니다. 제공된 [ValidateAntiForgeryToken]
및 해당 @Html.AntiForgeryToken()
을 사용하여 양식을 사용하여 제출 된 숨겨진 필드를 POST로 생성합니다.MVC AntiForgeryToken은 이전에 생성 된 토큰을 다시 사용했습니다.
토큰을 대상에 숨겨진 필드로 제공하지 않으면 액션이 [ValidateAntiForgeryToken]
으로 주석 처리되어 예상대로 오류가 발생하기 때문에 지금까지 메커니즘이 제대로 작동하는 것 같습니다.
그러나 나는 Firebug 또는 Chrome 검사기를 사용하여 생성 된 토큰을 여러 개 캡처 한 다음 메모장에 복사 한 다음 AntiForgeryToken을 사용하는 다른 페이지로 이동하고 기본적으로 숨겨진 필드를 이전 토큰 중 하나로 바꾸는 것이 이상하다는 것을 발견했습니다. 생성되면 오류가 발생하지 않습니다. 나는 누군가가 그 값을 얻을 수 있다면, AntiForgeryToken을 필요로하는 응용 프로그램의 어떤 형태로든 요청을 위조 할 수 있기 때문에 항상 1 : 1 관계 (페이지 숨김 필드 - ValidationAtServer)를 가질 것을 기대하고있었습니다.
토큰이 생성 된 후에는 동일한 토큰을 다시 사용할 수 없어야한다고 생각 했었습니다. 프레임 워크 자체의 보안 결함을 보았습니다.
누군가가 더 많은 통찰력을 제공 할 수 있다면 크게 감사하겠습니다. 그것.
안드레이 나는 감정을 가지고 있었지만 어떻게하면 다음을 할 수 있을까요? HTML에서 AntiforgeryToken을 꺼내서 IIS Express를 종료하고 브라우저를 닫은 다음 프로젝트를 시작한 후에 이전에 포깅 한 동일한 위조 토큰을 다시 사용할 수 있습니다. – jcgarciam