웹 사이트에 GetUser
웹 방식 이 있다고 가정 해 보겠습니다 .
http://www.example.com/User/GetUser/32
JSON 응답을 반환합니다.
{ "Name": "John Doe" }
이 메소드가 POST 요청 만 허용 http://www.example.com/User/GetUser/32
하는 경우 POST 메소드 를 사용하여 AJAX 요청이 작성되는 경우에만 컨텐츠가 브라우저로 리턴됩니다 . CORS를 구현하지 않은 경우 브라우저는이 요청을 수행하는 다른 도메인의 데이터를 보호합니다.
그러나 GET 요청을 허용하고 POST 대신 GET을 사용하여 위와 유사한 AJAX 요청을 수행하면 악의적 인 사용자가 script
HTML 의 태그를 사용하여 자신의 사이트 컨텍스트에 JSON을 포함시킬 수 있습니다 . 예 www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
이 JavaScript는 www.evil.com
웹 메서드에서 반환 된 개체를 읽을 방법이 없어야 하기 때문에 쓸모 가 없어야합니다. 그러나 이전 버전의 브라우저 (예 : Firefox 3)의 버그로 인해 JavaScript 프로토 타입 객체를 재정의하고 www.evil.com
메소드에서 반환 한 데이터를 읽을 수 있습니다. 이를 JSON 하이재킹이라고합니다.
이를 방지하는 몇 가지 방법은 이 게시물 을 참조하십시오 . 그러나 최신 버전의 최신 브라우저 (Firefox, Chrome, IE)에서는 알려진 문제가 아닙니다.