Почему междоменные запросы AJAX помечаются как «угроза безопасности»? - PullRequest
4 голосов
/ 10 февраля 2012

По умолчанию браузеры не разрешают межсайтовые запросы AJAX.

Я понимаю, что междоменный запрос с ошибкой может представлять угрозу безопасности. Если я возьму html или javascript внешнего сайта и просто "рендеринг" его на мой сайт, это проблема. Этот внешний код может быть использован для многих неприятностей - например, для получения доступа к данным сеанса текущего пользователя.

Но если я запрашиваю только данные JSON или XML и использую подходящую библиотеку для анализа JSON (а не только с помощью eval), я не могу представить, как это может представлять угрозу безопасности. Хуже всего может быть то, что контент с этого сайта отображается неправильно.

Я что-то упустил? Можно ли скомпрометировать страницу, которая читает json / xml, просто отправив ей какие-то вредоносные данные?

Ответы [ 2 ]

12 голосов
/ 10 февраля 2012

Риск не относится к сайту, который делает запрос.

Например:

  1. Алиса посещает свой банк и входит в систему.
  2. Затем она посещает Зло.
  3. Злой сайт использует JavaScript, чтобы браузер Алисы отправил запрос в ее банк
  4. Её Банк отвечает с реквизитами Алисы и передает их в JavaScript
  5. Затем JavaScript передает их контролеру Evil Site

В двух словах - он запрещает злоумышленникам читать личные данные с любого сайта, для которого у Алисы есть учетные данные (и те, которые находятся за брандмауэром, например, корпоративная интрасеть Алисы).

Обратите внимание, что это не предотвратит атаки, которые не зависят от возможности считывания данных с сайта ( CSRF ), но без единой политики происхождения стандартная защита от CSRF будет легко победить .

2 голосов
/ 10 февраля 2012

Вы абсолютно правы со своим вторым пунктом о JSON / XML.Когда соблюдаются надлежащие меры предосторожности, нет риска получить JSON из другого домена.Даже если сервер решит вернуть какой-нибудь неприятный скрипт, вы можете эффективно управлять рисками с помощью правильного анализа данных.На самом деле, именно поэтому взлом JSONP так популярен (см., Например, поисковый API Twitter).

Уже сейчас мы видим, что браузеры с поддержкой HTML5 представляют новые объекты и стандарты для междоменной связи (postMessage - http://dev.w3.org/html5/postmsg/ и Междисциплинарный обмен ресурсами - http://www.w3.org/TR/cors/).

...