Правило ограничения домена (Same Origin Policy, в переводе с англ. — «Принцип одинакового источника») - это важная концепция в модели безопасности веб-приложений. В рамках этой политики веб-браузер позволяет скриптам, находящимся на одной веб-странице получить данные на второй веб-странице, но только если обе веб-страницы имеют одинаковый источник (Origin). Источник состоит из комбинации URI схемы, имени домена и номера порта. Политика ограничивает вредоносным скриптам с одной веб-страницы получение доступа к чувствительной информации на другой веб-странице через DOM-дерево данной страницы.
Этот механизм имеет особое значение для современных веб-приложений, которые в значительной степени зависят от файлов HTTP cookie для поддержания аутентифицированных пользовательских сеансов. Поскольку сервера действуют на основе файлов HTTP cookie для раскрытия конфиденциальной информации или выполнения действий по изменению состояния на стороне клиента должно поддерживаться строгое разделение контента, предоставляемого несвязанными сайтами, чтобы предотвратить потерю конфиденциальных данных или нарушение целостности данных.
Очень важно помнить, что принцип одинакового источника применим только к скриптам. Это означает, что такие ресурсы, как изображения, CSS и динамически-загружаемые скрипты могут быть доступны из любого источника через соответствующие HTML-теги (исключение составляют шрифты). Атаки основываются на том факте, что принцип одинакового источника не применяется к HTML-тегам.
История
правитьКонцепция принципа одинакового источника была представлена Netscape Navigator 2.02 в 1995 году, вскоре после представления JavaScript в Netscape 2.0. JavaScript позволял использовать скрипты на веб-страницах, в частности, получить программный доступ к Document Object Model (DOM).
Принцип изначально был разработан для защиты доступа до DOM, но с тех пор он был расширен для защиты конфиденциальных частей глобальных объектов JavaScript.
Проверочная таблица
правитьДля иллюстрации, следующая таблица даёт обзор типичных проверок для сравнения с примером URL «http://www.example.com/dir/page.html».
Сравниваемый URL | Проверка | Причина |
---|---|---|
http://www.example.com/dir/page.html | Соответствует | Тот же протокол и домен |
http://www.example.com/dir2/other.html | Соответствует | Тот же протокол и домен |
http://username:password@www.example.com/dir2/other.html | Соответствует | Тот же протокол и домен |
http://www.example.com:81/dir/other.html | Не соответствует | Тот же протокол и домен, но другой порт |
https://www.example.com/dir/other.html | Не соответствует | Отличается протокол |
http://en.example.com/dir/other.html | Не соответствует | Отличается домен |
http://example.com/dir/other.html | Не соответствует | Отличается домен (требуется полное соответствие) |
http://v2.www.example.com/dir/other.html | Не соответствует | Отличается домен (требуется полное соответствие) |
http://www.example.com:80/dir/other.html | Не определено | Явное указание порта. Зависит от реализации в браузере. |
См. также
правитьСсылки
править- A detailed comparison of several flavors of same-origin policies Архивная копия от 19 августа 2016 на Wayback Machine
- A review of deficiencies in same-origin policies and their implication for web security
- Sample vendor-provided same origin policy specification Архивная копия от 11 июля 2007 на Wayback Machine
- Defeating, breaking and bypassing The Same Origin Policy