Комментарии 10
Наивный вопрос по примеру атаки. Если пользователь сидит на странице evil.com, то почему браузер отправляет куки, полученные на странице bank.com? Может быть, изначально беда именно в этом?
Куки можно не отсылать (как и делается в том же fetch без credentials: "include"
), но этого недостаточно. Пользователь может находиться во внутренней сети и иметь доступ к каким-то ресурсам, недоступным снаружи, сайт злоумышленника не должен уметь забирать оттуда какие-либо данные, даже без кукисов.
То есть fetch без чужих куков пойдёт только если JS на сайте evil.com написан честным человеком? Чё-то ржу.
Правильно ли я понимаю, что весь этот "горячо любимый" всеми веб-разработчиками CORS это кривой костыль, которым попытались пофиксить этот косяк?
fetch без чужих куков пойдёт, если не указать credentials: "include"
. Иначе пойдет с куками. Но в любом случае ответ сервера будет передан запросившему его js-коду, только если сервер снабдил свой ответ необходимыми заголовками (причем для запроса с куками заголовков должно быть больше). От честности автора тут ничего не зависит.
Я бы не назвал это костылем. Просто изначально были ограничения на "одинаковый origin", а спустя несколько лет добавились цивилизованные средства их обхода с согласия сервера. До этого был JSONP, который действительно костыль.
Но ведь человек с evil.com не забудет прописать credentials: "include"
, правда ведь?
Ещё один вопрос. CORS он для защиты только от этой беды с кукисами, или там есть и другие сценарии атаки?
Такие костыли разной степени кривости есть не только в ИТ.
Например в интернет-банкинге проверка по протоколу 3DS, так горячо рекламируемая банками, будет работать только если продавец включил ее у себя в магазине.
Да — не банк, не покупатель, а продавец.
Таким образом если продавец мошенник, вся эта любовно нагороженная система безопасности даже не включится...
Скрытый текст

У куки есть SameSite атрибут, который позволяет настраивать, какие куки могут отправляться с запросом, исходя из источника запроса. Но это сильно позже появилось чем Access-Control-Allow-Origin, и не является заменой, скорее еще одна из мер защиты.
Например, на сайте comments-from-vk.com выводится блок с комментариями пользователя из ВК (или с возможностью оставить комментарий от лица пользователя ВК). В таком случае куки необходимы, чтобы ВК мог отдать данные о профиле пользователя, например, или чтобы comments-from-vk.com знал, какой пользователь ВК оставил комментарий
С первых же строк видно непонимание темы самим автором.
3.Код, полученный с сайта evil.com, заставляет ваш браузер тайно отправить запрос Get /api/account на bank.com.
Ну и все признаки текста, сгенерированного ИИ. Печально.
CORS для собеседований и работы