Правило ограничения домена

Правило ограничения домена (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 Не определено Явное указание порта. Зависит от реализации в браузере.

См. также

править

Ссылки

править