Допустим, у вашего сайта есть GetUser
веб-метод:
http://www.example.com/User/GetUser/32
который возвращает ответ JSON:
{ "Name": "John Doe" }
Если этот метод принимает только запросы POST, то содержимое будет возвращено в браузер только в том случае, если запрос AJAX выполнен с http://www.example.com/User/GetUser/32
использованием метода POST. Обратите внимание: если вы не реализовали CORS , браузер будет защищать данные от других доменов, отправляющих этот запрос к вам.
Однако, если вы разрешили запросы GET, а также сделали запрос AJAX, аналогичный приведенному выше, с GET вместо POST, злонамеренный пользователь может включить ваш JSON в контекст своего собственного сайта, используя script
тег в HTML. например, на www.evil.com
:
<script src="http://www.example.com/User/GetUser/32"></script>
Этот JavaScript должен быть бесполезным, www.evil.com
потому что не должно быть возможности прочитать объект, возвращаемый вашим веб-методом. Однако из-за ошибок в старых версиях браузеров (например, Firefox 3) возможно переопределение объектов-прототипов JavaScript и возможность www.evil.com
чтения ваших данных, возвращаемых вашим методом. Это известно как JSON Hijacking.
Посмотрите этот пост, чтобы узнать о некоторых методах предотвращения этого. Однако это не известная проблема в более поздних версиях современных браузеров (Firefox, Chrome, IE).