Этот вопрос касается только защиты от атак с подделкой межсайтовых запросов.
В частности, речь идет о том, насколько эффективна защита с помощью заголовка 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 может каким-то образом установить заголовок Origin.
Я знаю, что это невозможно с XHR (см., Например, Безопасность для совместного использования ресурсов между источниками ), по крайней мере, нет, если мы верим, что спецификация W3C будет правильно реализована во всех современных браузерах (можем ли мы?)
Но как насчет других типов запросов - например, отправки формы? Загружаете тег script / img / ...? Или каким-либо другим способом, который страница может использовать для (легального) создания запроса? А может, какой-нибудь известный взлом JS?
Примечание: я не говорю о
- нативные приложения,
- манипулируемые браузеры,
- ошибки межсайтового скриптинга на странице example.com,
- ...