Какова цель междоменных ограничений XHR? - PullRequest
5 голосов
/ 06 июля 2011

Мне всегда было интересно, какова цель междоменных ограничений XHR.

Похоже, что цель состоит в том, чтобы предотвратить отправку злоумышленником Javascript личных данных злоумышленнику.Однако отправка данных в любой домен легко возможна с помощью внедренного тега script или img (или любого другого внешнего ресурса в этом отношении).

Ответы [ 4 ]

10 голосов
/ 06 июля 2011

Если какой-либо произвольный веб-сайт может сделать XHR-вызов на ваш веб-сайт, может произойти следующее:

  1. Невинный пользователь Алиса входит на ваш защищенный веб-сайт и получает безопасный файл cookie сеанса.
  2. В другой вкладке браузера Алиса посещает злобный хакерский сайт Боба (который она считает просто видео Джастина Бибера)
  3. Страница Боба отправляет XHR на ваш защищенный веб-сайт.Без междоменной политики браузер отправит запрос на ваш веб-сайт, включая cookie-файл безопасного сеанса, и получит результаты.Эти результаты могут включать в себя все, что доступно для Алисы, когда она входит на ваш защищенный сайт.

Как и в любом случае, даже с междоменной политикой злой сайт Боба может фактически отправлять HTTP-запрос на вашсервер, разместив форму.Он не сможет увидеть результаты, но если Боб умен, он, возможно, обнаружил URL на вашем сайте, который позволяет выполнять некоторые действия из POST, даже если это не из формы на одной из ваших страниц.Это называется подделкой межсайтовых запросов, от которой браузер не может вас защитить.

2 голосов
/ 06 июля 2011

Политика безопасности на том же сайте разработана таким образом, чтобы злоумышленник мог внедрить вредоносный скрипт в веб-страницу, требуется одно из следующих действий:

  1. Веб-страница ссылается на скрипт или ресурсы изображениякоторые находятся за пределами домена веб-страницы, и злоумышленник может получить контроль над одним из этих внешних ресурсов.
  2. Злоумышленник имеет доступ к главному веб-серверу веб-страницы
  3. Или злоумышленник имеетуправление машиной на маршруте между веб-сервером и клиентом браузера (для незащищенных http-соединений)

Если вы создаете свой веб-сайт, чтобы ссылаться только на ресурсы в своем собственном домене, а вы - нетсделайте что-нибудь глупое, например, примите javascript (или SQL), встроенный в URL-адрес, или используйте javascript eval () для ввода текста пользователем, вы в относительно хорошей форме для конфиденциальности данных на своей веб-странице.

Если вы ссылаетесь на ресурсы сценариев или изображений, которые находятся в другом домене, безопасность вашего веб-сайта также зависит от безопасности этого внешнего домена.

Лучший способ защитыПротив # 3 выше (человек в середине атаки) является защита всех запросов к вашему серверу (для страницы, скрипта и изображений) с использованием протокола https вместо http.Человек посередине не может создать действительный криптографический сертификат для целевого домена, поэтому браузер может по крайней мере предупредить пользователя о том, что с сайтом что-то подозрительно.

Классическим примером безопасности на том же сайте является упаковкацелевая веб-страница в фрейме на странице, размещенной на сервере злой злоумышленника.Если URL-адрес родительской страницы и URL-адрес содержимого iframe находятся в одном домене, им разрешается общаться друг с другом и просматривать внутренние данные, переменные, DOM и т. Д. Если домены различаются, политика безопасности одного доменазаявляет, что браузер не должен позволять iframe видеть какие-либо переменные или информацию DOM своего родителя, ни родитель должен видеть переменные или DOM внутреннего пространства iframe.Это сделано для предотвращения непреднамеренного или ненадлежащего обмена данными между двумя доменами.

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

Обратите также внимание, что изначально XHR был добавлен в среду браузера как стороннее расширение, поэтому лучшим способом было следовать существующей безопасности браузера.модель для клиентских запросов.XHR следует тем же правилам, которые использует браузер для извлечения html-страниц, сценариев и изображений.Если бы XHR был спроектирован в спецификации HTML с самого начала, а не был добавлен позже, для XHR все могло бы быть иначе.См. HTML5 PostMessage spec в качестве примера.

0 голосов
/ 06 июля 2011

Проверьте следующую статью вики, это может помочь.

http://en.wikipedia.org/wiki/Same_origin_policy

0 голосов
/ 06 июля 2011

Вы можете создать веб-сайт для доступа к некоторым веб-сайтам, вызывающим DoS. Это одно из возможных злонамеренных применений кросс-XHR.

...