asp.net에서 CSRF 공격을 완화하기 위해 IHttpModule을 구현 중입니다. 그것은 응답 HTML에 GET에 asp.net SessionID와 함께 숨겨진 양식 매개 변수를 주입합니다. 그런 다음 POST에서 숨겨진 매개 변수의 값이 현재 SessionID와 일치하는지 확인합니다. 내가 아는 한, SessionID 값을 얻는 유일한 방법은 악의적 인 사이트에서 읽을 수 없거나 결정할 수없는 쿠키에서 가져 오는 것입니다. 내가 간과 할 것이 있습니까?CSRF 유효성 검사 토큰 : 세션 ID가 안전합니까?
7
A
답변
8
이 방법은 올바른 것입니다. XSRF 보호를 POST에만 적용하기 때문에 GET 작업을 통해 사용할 수있는 모든 작업을 "안전"해야합니다 (어쨌든 모범 사례입니다).
추가 보험의 경우, 모든 링크에 URL 매개 변수를 추가하고 모든 GET 요청에서 해당 매개 변수를 확인함으로써 GET에도 사용할 수 있지만 성가시다.
추가 편집증 환자 인 경우 대체 ID에 다른 임의의 번호를 선택할 수 있습니다. 브라우저가 다른 사이트의 악의적 인 자바 스크립트에 세션 쿠키를 액세스 할 수 없게 만들지라도이 경우에도 사용자를 보호 할 수 있습니다. 세션이 생성되면 다른 큰 난수를 선택하여 세션에 저장하십시오.
6
이상적으로는 세션 ID 이외의 것을 사용하고 싶을 수도 있지만 기본적으로는 그게 전부입니다. OWASP는 사용자 세션에 저장된 임의의 양식 요소 이름을 사용하도록 제안합니다. 이렇게하면 공격자는 올바른 숨겨진 필드를 위조 할 수 없습니다.
+0
양식 요소 이름을 무작위로 추출하는 것은 흥미로운 아이디어입니다. 링크를 가져 주셔서 감사합니다. – ironsam
관련 문제
- 1. CSRF 및 변경 토큰
- 2. CSRF 토큰 - 올바르게 구현하는 방법?
- 3. 아약스의 CSRF 토큰
- 4. CodeIgniter의 CSRF 토큰 문제
- 5. django CSRF 유효성 확인
- 6. 레일 3에서 CSRF 토큰 끄기
- 7. 젠드 양식 - 한 페이지에 여러 양식 및 (CSRF) 토큰 유효성 검사
- 8. csrf 토큰 : CSRF 공격이 감지되었습니다. 백엔드 용으로 만 생산
- 9. 외부 패키지를 사용하지 않고 Tomcat 6을 사용하여 CSRF 유효성 검사
- 10. ASP.NET에서 세션 ID가 사라짐
- 11. 형식 유효성 검사없이 codeigniter csrf 보호
- 12. 세션 토큰 - 어떻게 작동합니까?
- 13. 세션/세션 ID가 둘 이상의 사용자에게 할당되었습니다.
- 14. ASP에서 유효성 검사/유효성 검사 유효성 검사 .net MVC 3
- 15. WCF 데이터 서비스 수준에서 SAML 토큰 유효성 검사
- 16. 다른 SAML 토큰 유효성 검사 호출은 특별히 무엇을합니까?
- 17. 일부 사용자의 Facebook에서 "액세스 토큰 유효성 검사 오류"가 발생했습니다.
- 18. url에 세션 id가 jquery가 추가되었습니다.
- 19. Firefox에서 세션 ID가 변경되는 이유
- 20. Html.DropDownList 유효성 검사 오류가없는 유효성 검사 오류
- 21. jQuery submitHandler 트리거 유효성 검사 유효성 검사
- 22. 젠드 프레임 워크 CSRF 세션 문제
- 23. https 토큰 매개 변수가있는 URL : 얼마나 안전합니까?
- 24. Struts2 - 토큰 세션 요격 문제
- 25. PHP 세션 변수는 얼마나 안전합니까?
- 26. POST body 대신 헤더에 유효성 검사 토큰이있는 경우
- 27. Struts 액션 유효성 검사
- 28. a) CSRF 토큰 + SSL이없는 HTTP 인증 또는 b) devise가있는 CSRF 토큰이 필요합니까?
- 29. asp.net에서 세션을 사용하여 유효성 검사
- 30. Django : 페이스 북에서 CSRF 토큰 누락 'signed-request'게시
http가 상태를 바꿀 수는 없지만 (분명히 가능할 수 있기 때문에) 지금 당장은 GET에 대해 걱정하지 않을 것입니다. 우리가 대회/표준을 지키는 한 우리는 잘되어야합니다. 내가 언급 한 것처럼 추가 보안을 위해 SessionID가 아닌 다른 값을 사용하여 조사 할 수 있습니다 - 감사합니다. – ironsam