Почему такая же политика происхождения для XMLHttpRequest - PullRequest
29 голосов
/ 02 декабря 2009

Почему браузеры применяют одну и ту же политику происхождения к XMLHttpRequest? Это действительно неудобно для разработчиков, но, похоже, мало что делает для того, чтобы остановить хакеров. Есть обходные пути, они все еще могут включать javascript из внешних источников (сила JSONP).

Кажется, что это устаревшая «функция» в сети, которая в значительной степени взаимосвязана.

1 Ответ

23 голосов
/ 02 декабря 2009

Поскольку XMLHttpRequest передает токены аутентификации пользователя. Если пользователь вошел на сайт example.com с помощью обычной аутентификации или некоторых файлов cookie, а затем посетил attacker.com, последний сайт мог создать запрос XMLHttpRequest для example.com с полной авторизацией для этого пользователя и прочитать любую личную страницу, которую мог пользователь (затем перешлите его обратно злоумышленнику).

Поскольку размещение секретных токенов на страницах веб-приложений - это способ остановить простые атаки между сайтами-запросами-подделками, это означает, что attacker.com может предпринять любые действия на странице, которые пользователь может выполнить на example.com, без какого-либо согласия или взаимодействия со стороны. их. Глобальный XMLHttpRequest - это глобальный межсайтовый скриптинг.

(Даже если у вас была версия XMLHttpRequest, которая не прошла проверку подлинности, все еще есть проблемы. Например, злоумышленник может отправлять запросы другим непубличным компьютерам в вашей интрасети и читать любые файлы, которые он может загрузить с них которые не могут быть предназначены для общего пользования. Теги <script> уже страдают от ограниченной формы такого рода уязвимости, но полностью читаемые ответы XMLHttpRequest будут пропускать все виды файлов вместо нескольких, к сожалению, созданных, которые могут анализировать как JavaScript.)

...