2016-12-14 4 views
1

Everyone CORS는 CSRF 공격으로부터 방어하기 위해 아무 것도하지 않는다고 말합니다. 도메인 외부의 CORS가 도메인의 리소스에 액세스 (읽기)하지 못하기 때문입니다. 그러나 이 요청을 처리하지 못하도록 차단합니다. 따라서 악의적 인 사이트는 상태를 변경하는 DELETE 요청을 보낼 수 있으며 결과를 다시 읽을 수는 없습니다.CORS가 비행 전 비행으로 CSRF 공격을 차단하지 않는 이유는 무엇입니까?

모두 훌륭합니다.

pre-flight CORS을 제외하고.

CORS는 전송되기 전에 요청을보고 합법적인지 여부를 확인합니다. 그렇지 않은 경우 요청이 거부됩니다.

그래서 CSRF 공격자가 보내려고하는 DELETE 요청은 비행 전 점검에 실패하므로 거부됩니다. CSRF 공격은 실패합니다.

무엇이 여기에 있습니까?

답변

0

비행 전 요청은 CSRF 일반적으로 예방하지 않습니다.. 예를 들어 모든 크로스 도메인 아약스 호출이 비행 전 요청을 생성하는 것은 아니며 보통 POST는 그렇지 않습니다. 사전 비행 요청이 실제로 위험을 줄이는데 도움이되는 경우가있을 수 있습니다.

또 다른 문제는 리퍼러/출처를 확인하는 것과 같습니다. 공격자가 악의적 인 웹 사이트의 일반 Javascript에서 referer 또는 origin을 재정의하는 것은 불가능하지만 예를 들어 이전 버전의 Flash와 같은 적합한 브라우저 플러그인을 사용하면 가능할 수 있습니다. 브라우저 플러그인이이를 허용하면 침입자는 사전 비행없이 원본 출처 요청을 보낼 수 있습니다. 따라서 비행 전 요청에만 의존하고 싶지는 않습니다.

+0

"예를 들어 모든 도메인 간 ajax 호출이 비행 전 요청을 생성하는 것은 아니며 보통 POST는 그렇지 않습니다." 왜 안돼? – ineedahero

+1

간단한 교차 출처 게시물을 작성하는 데 아약스가 필요하지 않습니다. 일반 폼 포스트도 사용할 수 있으므로 제한하는 데 많은 가치가 없습니다. –

+0

오. 나는 네가하는 말을 본다. 그 이유는 ... CORS 사전 비행은 PUT 요청에 대해 활성화되지만 POST 요청에는 활성화되지 않는 이유는 무엇입니까? POST가 위험 할 수 있다고 말하는 것처럼 .... – ineedahero