Что такое политика одинакового источника (Same Origin Policy) и какие ограничения она накладывает на фронтенд?
1️⃣ Как кратко ответить
Политика одинакового источника (Same Origin Policy) — это механизм безопасности в веб-браузерах, который ограничивает взаимодействие между документами и скриптами, загруженными с разных источников. Она предотвращает доступ к DOM и данным, если протокол, домен и порт не совпадают, защищая от атак типа XSS и CSRF.
2️⃣ Подробное объяснение темы
Политика одинакового источника (Same Origin Policy, SOP) — это фундаментальный механизм безопасности, используемый веб-браузерами для защиты данных пользователя. Она ограничивает взаимодействие между ресурсами, загруженными с разных источников, чтобы предотвратить потенциально вредоносные действия.
Что такое "одинаковый источник"?
Источник определяется тремя компонентами:
- Протокол (например,
httpилиhttps) - Домен (например,
example.com) - Порт (например,
80,443)
Два URL считаются одинаковыми, если все три компонента совпадают. Например, http://example.com:80/page1 и http://example.com:80/page2 имеют одинаковый источник, но http://example.com:80/page1 и https://example.com:443/page1 — нет, из-за различий в протоколе и порте.
Ограничения, накладываемые SOP:
-
Доступ к DOM: Скрипты с одного источника не могут взаимодействовать с DOM документами, загруженными с другого источника. Это предотвращает возможность изменения или кражи данных.
-
Чтение данных: Скрипты не могут читать данные, такие как cookies, localStorage или sessionStorage, если они принадлежат другому источнику.
-
AJAX-запросы: XMLHttpRequest и Fetch API не могут быть использованы для получения данных с другого источника без специальных разрешений (например, CORS).
Пример ограничения:
// Предположим, что этот скрипт загружен с http://example.com
fetch('http://anotherdomain.com/data')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Ошибка:', error));
- В этом примере скрипт пытается выполнить запрос к
http://anotherdomain.com. Без разрешений CORS браузер заблокирует этот запрос, так как источники различаются.
Зачем это нужно?
SOP защищает пользователей от атак, таких как:
- XSS (Cross-Site Scripting): Злоумышленник может внедрить скрипт, который попытается украсть данные с другого источника.
- CSRF (Cross-Site Request Forgery): Злоумышленник может попытаться заставить браузер пользователя выполнить нежелательные действия на другом сайте.
Как обойти ограничения?
Для легитимного обмена данными между разными источниками используется механизм CORS (Cross-Origin Resource Sharing). Сервер может настроить заголовки, чтобы разрешить доступ к своим ресурсам из других источников.
Пример настройки CORS:
На сервере можно добавить заголовок:
Access-Control-Allow-Origin: http://example.com
- Этот заголовок разрешает
http://example.comдоступ к ресурсам сервера, тем самым обходя ограничения SOP.
Политика одинакового источника — это важный механизм, который помогает защитить данные пользователей и обеспечивает безопасность веб-приложений.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться