2015-08-17 2 views
0

Я не могу понять, зачем нам это правило. Если это такой импорт, почему мы можем получить так много обходного пути, чтобы его решить? Как JSONP, CORS и т. Д.?Политика одного и того же происхождения для чего

Есть ли какой-нибудь пример, который может продемонстрировать ущерб без этого правила?

+1

http: //security.stackexchange.com/questions/8264/why-is-the-same-origin-policy-so-important –

ответ

2

Если вы посмотрите на MDN article, вы увидите это:

пишет Перекрестная происхождения, как правило, разрешается. Примерами являются ссылки, перенаправления и представления форм. Некоторые редко используемые HTTP-запросы требуют предварительной проверки.

Обычно допускается внедрение в кросс-начале. Примеры приведены ниже.

Чтения с перекрестными проходами обычно не допускаются, но доступ для чтения часто просачивается путем внедрения. Например, вы можете прочитать ширину и высоту встроенного изображения, действия встроенного скрипта или доступность встроенного ресурса.

Вот хороший post on security StackExchange:

Предположим, что вы вошли в Facebook и посетить вредоносный веб-сайт в другой вкладке браузера. Без такой же исходной политики JavaScript на этом веб-сайте может сделать что-либо для вашей учетной записи Facebook, что вам разрешено делать. Например, прочитайте личные сообщения, обновите статус сообщения, проанализируйте дерево DOM HTML после того, как вы ввели свой пароль перед отправкой формы.

Что касается вашего вопроса о том, почему существует CORS, JSONP и т.д. (то есть способы, чтобы обойти политики одного источника): Это позволяет доменам указать пути для других источников, чтобы получить доступ к своему API, (прочитать содержимое, и т. д.) CORS, например, позволяет серверам указывать белый список безопасных доменов, которые разрешены, скажем, с сервера.

+1

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

0

Защита от перекрестного проникновения предотвращает кражу информации на другом веб-сайте с другого веб-сайта, который зарегистрирован как вы.

Например, если я создаю веб-сайт, и я создаю сайт gmail, на который вы регулярно регистрируетесь, и моей веб-странице разрешено обращаться к фрейму gmail и читать все ваши электронные письма на веб-странице gmail, то я могу легко украсть много вашей информации. Расширьте это на свой банковский сайт, ваш сайт в PayPal и т. Д. ... Все, что мне нужно сделать, чтобы получить доступ к этому, - это заставить вас прийти на мой вредоносный сайт, как только вы попали в один из этих уязвимых места. Безопасность перекрестного происхождения предотвращает такой доступ к кросс-сайтам, поэтому ненадежный веб-сайт не может произвольно красть информацию с другой веб-страницы в том же браузере.

Конкретная опасность доступа к веб-странице другого веб-сайта «в браузере» заключается в том, что веб-страница в браузере имеет доступ ко всем вашим регистрационным файлам для этого сайта, поэтому она часто показывает данные, которые обычно недоступны для общего public через любой публичный интерфейс, не имея также законных учетных данных. Вот почему веб-страница, отображаемая в браузерах, должна быть защищена.

«Рабочие элементы», такие как JSONP или CORS, требуют сотрудничества с сайта-хозяина, поэтому их можно использовать только в том случае, если хост-сайт чувствует, что интерфейс, который они позволяют использовать с помощью этих механизмов, безопасен и уместен. Вы не можете использовать обычный интерфейс и, как клиент, просто использовать это через JSONP или CORS - это не сработает. Оба этих механизма требуют, чтобы сервер специально включил механизм доступа к перекрестному происхождению.