부터 several threads 나는 MVC 위조 방지 토큰의 사용이 사용자가 인증되지 않은 사이트 영역에서 과도하다는 것을 알 수 있습니다.인증되지 않은 시나리오에서 MVC3 AntiForgeryToken 사용?
site1, site2, site3 등에서 mysite.com에 일부 정보를 게시하는 응용 프로그램이 있습니다. 각 사이트에는 비동기 Javascript POST를 통해 POST 요청으로 전송되는 고유 식별자가 있습니다. site1-3에서 실행되는 Javascript는 mysite.com에서 생성 된 다음 일부 Javascript 변수가 채워진 사이트로 반환됩니다. 다음과 같이
그래서 라이프 사이클은 다음 사이트 개발에
- 페이지가 mysite.com에 자바 스크립트 참조를 가지고있다.
- 링크 참조는 site1로 돌아가는 Javascript를 생성하는 컨트롤러 경로입니다.
- 반환되는 JS의 끝 부분에는 site1의 페이지 방문자에 대한 세부 정보 인 URL, 브라우저 등이 포함 된 mysite.com으로 되돌아가는 POST 요청이 포함됩니다. 매개 변수 목록에 antiforgery 토큰을 추가하는 어떤 지점이있는 경우
내가 JS POST 요청의 수용 컨트롤러에 잘에서 POST 매개 변수를 읽을 수 있습니다, 그러나, 내가 무엇을 알고 싶어하는 것입니다.
그렇다면 초기 요청에서이를 생성해야하고 JS의 JS 변수로 다시 전달하여 site1로 반환 한 다음 두 번째 요청에서 POST 양식과 함께 다시 전달해야합니다.
mysite.com의 모든 처리는 유효한 계정이 발견 된 경우에만 발생하므로이 문제를 해결하는 데 필요한 사항이 있습니까?
그렇다면 컨트롤러 수준에서 위조 방지 토큰을 어떻게 생성합니까?
저는 실제로 이미 이와 같은 것을하고 있습니다. 각 요청에 대해 두 개의 새 GUID가 만들어집니다. 첫 번째 GUID는 사용자를 참조하고 클라이언트 측에서 쿠키를 읽습니다. 해당 방문자의 GUID가 이미 내 DB에 있으면 해당 값을 사용합니다. 그렇지 않으면 쿠키를 설정하고 DB에 추가하십시오. 두 번째 GUID는 세션을 추적하는 데 사용됩니다 (3 분 만료). 나는이 두 가지 조합이 충분한 지 궁금 해서요, 아니면이 경우에는 요청 검증자인 세 번째 GUID를 만드십시오 (내가 올바르게 받으면). – ElHaix
나는 이것이 꼭 필요한 것이라고 말하지는 않지만 요청이 실수로 반복 될 수있는 구멍을 막을뿐만 아니라 요청을 위임하는 것이 훨씬 더 어려워진다. 두 GUID 중 어느 것도이 작업을 수행하지 않습니다.성공적인 침입자는 3 분 안에 차단 된 사용자/세션 GUID를 사용하여 수천 개의 요청을 제출할 수 있습니다. 추가 일회성 넌스 추가의 복잡성에 대비하여 그러한 일이 발생할 위험을 감수해야합니다. – tvanfosson
의미가 있습니다. 이 접근법을 추가하고 사용 된/사용되지 않는 개념을 좋아합니다. 감사. – ElHaix