Це питання стосується захисту лише від атак на підписи між веб-сайтами.
Йдеться саме про те, чи захист через заголовок Origin (CORS) такий же хороший, як захист через маркер CSRF?
Приклад:
- Аліса входить у систему (за допомогою файлу cookie) за допомогою свого браузера на " https://example.com ". Я припускаю, що вона використовує сучасний браузер.
- Аліса відвідує " https://evil.com ", а клієнтський код зла.com виконує певний запит на " https://example.com " (класичний сценарій CSRF).
Так:
- Якщо ми не перевіримо заголовок Origin (на стороні сервера) і не має маркера CSRF, у нас є отвір у безпеці CSRF.
- Якщо ми перевіримо маркер CSRF, ми в безпеці (але це трохи нудно).
- Якщо ми перевіримо заголовок Origin, запит від клієнтського коду зла.com повинен бути заблокований так само добре, як і при використанні маркера CSRF - за винятком випадків, коли для коду зла.com якось можливо встановити заголовок Origin.
Я знаю, що це не повинно бути можливим з XHR (див., Наприклад, Безпека для спільного використання ресурсів між походженнями ), принаймні, ні, якщо ми довіряємо, що специфікація W3C правильно впроваджена у всіх сучасних браузерах (чи можемо ми?)
А як щодо інших видів запитів - наприклад, подання форми? Завантаження тегу script / img / ...? Або будь-яким іншим способом, яким сторінка може скористатися, щоб (юридично) створити запит? А може, якийсь відомий хакер JS?
Примітка: я не говорю про це
- рідні програми,
- маніпульовані веб-переглядачі,
- помилки сценаріїв веб-сайтів на сторінці example.com,
- ...
Origin
? Це заперечує захист CORS.