2016-09-03 3 views
1

내 프로젝트 중 하나에서 CSRF 토큰을 사용하여 CSRF 보호를 구현하려고합니다. 나는 이것에 익숙하지 않고 요청에 CSRF 토큰을 보내는 것에 대해 읽었으며 HTTP POST와 같은 CSRF 토큰을 보내는 것이 GET보다 권장된다. 내 질문 :URL에 CSRF 토큰이 표시되고 POST 요청에 토큰이 포함됨

HTTP URL이 GET 요청의 CSRF 토큰을 노출하고 잠재적 공격자가이 CSRF 토큰을 사용하고 Javascript를 사용하여 CSRF 요청을 생성 할 수있는 경우 CSRF 토큰 양식에 숨겨진 필드로 저장되어 있습니까? 내 사이트에 XSS 취약점이있는 경우 공격자는 숨겨진 필드에서 토큰을 가져 와서 해당 토큰과 함께 요청을 보낼 수 있습니다.

미리 감사드립니다.

+0

왜 get 요청에 대해 csrf 보호가 필요합니까? – PeeHaa

+0

필자는 그럴 필요가 없지만, 앞으로는 간단한 앵커 태그로 노출 된 URL에 토큰을 보내고 싶을 것입니다. –

+0

왜 그렇게 했습니까? 그것은 그것의 요점은 무엇입니까? 관련 : http://stackoverflow.com/questions/3477333/what-is-the-difference-between-post-and-get – PeeHaa

답변

1

이 문제의 해답은 Same-Orign Policy에서 유래했습니다. 간단히 : 악의적 인 웹 사이트의 JavaScript는 다른 사이트의 양식 내용을 읽을 수 없습니다. StackOverflow.com이 gmail.com에서 이메일을 읽을 수있는 것처럼 보일 것이며, 고맙게도 이것이 불가능합니다.

HTTP 리퍼러가 타사 도메인에 데이터를 유출 할 수 있기 때문에 GET을 통해 전송 된 CSRF 토큰은 위험한 것으로 간주됩니다. 이 기능을 작동 시키려면 공격자가 이미지 나 클릭 가능한 링크를 삽입해야합니다.

CSRF Prevention Cheat Sheet도 검토해보십시오.

+0

예, 내 사이트에 XSS 취약점이 있고 공격자가 자바 스크립트를 삽입하여 해당 토큰을 읽으면 데이터 (CSRF 토큰)가 유출 될 수도 있습니다. 권리 ? –

+1

@Vikas Mangal 물론 XSS는 SOP 우회로이므로 CSRF 예방 전략을 우회 할 수있는 XSS의 능력에 대한 자세한 내용은 CSRF 예방 요령표를 참조하십시오. – rook

관련 문제