Этот вопрос касается защиты от атак типа Cross Site Request Forgery.
Речь идет конкретно о: Защита через заголовок Origin (CORS) так же хорошо, как защита через токен CSRF?
Пример:
- Алиса вошла в систему (используя файл cookie) со своим браузером, чтобы " https://example.com". Я предполагаю, что она использует современный браузер.
- Алиса посещает " https://evil.com", а код клиента evil.com выполняет какой-то запрос на " https://example.com" (классический сценарий CSRF).
Итак:
- Если мы не проверяем заголовок Origin (серверная сторона) и не токены CSRF, у нас есть дыра безопасности CSRF.
- Если мы проверим токен CSRF, мы будем в безопасности (но это немного утомительно).
- Если мы проверим заголовок Origin, запрос с кодового кода на стороне evil.com должен быть заблокирован так же хорошо, как и при использовании токена CSRF - кроме того, если возможно как-то для кода evil.com установить Заголовок заголовка.
Я знаю, что это невозможно с помощью XHR (см., например, Безопасность для совместного использования ресурсов для разных источников), по крайней мере, нет, если мы доверяем спецификации W3C для правильной реализации во всех современных браузерах (можно?)
Но как насчет других видов запросов - например, Форма отправить? Загрузка тега script/img/...? Или любой другой способ, которым страница может использовать (юридически) создание запроса? Или, может быть, некоторые известные JS-хаки?
Примечание: я не говорю о
- родные приложения,
- управляемые браузеры,
- ошибки на сценарии межсайтового скрипта на странице example.com,
- ...