Обновить

Комментарии 10

Наивный вопрос по примеру атаки. Если пользователь сидит на странице evil.com, то почему браузер отправляет куки, полученные на странице bank.com? Может быть, изначально беда именно в этом?

Куки можно не отсылать (как и делается в том же fetch без credentials: "include"), но этого недостаточно. Пользователь может находиться во внутренней сети и иметь доступ к каким-то ресурсам, недоступным снаружи, сайт злоумышленника не должен уметь забирать оттуда какие-либо данные, даже без кукисов.

То есть fetch без чужих куков пойдёт только если JS на сайте evil.com написан честным человеком? Чё-то ржу.

Правильно ли я понимаю, что весь этот "горячо любимый" всеми веб-разработчиками CORS это кривой костыль, которым попытались пофиксить этот косяк?

fetch без чужих куков пойдёт, если не указать credentials: "include". Иначе пойдет с куками. Но в любом случае ответ сервера будет передан запросившему его js-коду, только если сервер снабдил свой ответ необходимыми заголовками (причем для запроса с куками заголовков должно быть больше). От честности автора тут ничего не зависит.

Я бы не назвал это костылем. Просто изначально были ограничения на "одинаковый origin", а спустя несколько лет добавились цивилизованные средства их обхода с согласия сервера. До этого был JSONP, который действительно костыль.

Но ведь человек с evil.com не забудет прописать credentials: "include", правда ведь?

Ещё один вопрос. CORS он для защиты только от этой беды с кукисами, или там есть и другие сценарии атаки?

чтобы куки пошли, надо чтобы и bank разрешил и evil прописал. Одного желания evil не достаточно. Bank - или запрещает все поползновения не от bank, или разрешает только явно тем, кому он хочет разрешить.

Такие костыли разной степени кривости есть не только в ИТ.

Например в интернет-банкинге проверка по протоколу 3DS, так горячо рекламируемая банками, будет работать только если продавец включил ее у себя в магазине.

Да — не банк, не покупатель, а продавец.

Таким образом если продавец мошенник, вся эта любовно нагороженная система безопасности даже не включится...

Скрытый текст

У куки есть SameSite атрибут, который позволяет настраивать, какие куки могут отправляться с запросом, исходя из источника запроса. Но это сильно позже появилось чем Access-Control-Allow-Origin, и не является заменой, скорее еще одна из мер защиты.

Например, на сайте comments-from-vk.com выводится блок с комментариями пользователя из ВК (или с возможностью оставить комментарий от лица пользователя ВК). В таком случае куки необходимы, чтобы ВК мог отдать данные о профиле пользователя, например, или чтобы comments-from-vk.com знал, какой пользователь ВК оставил комментарий

С первых же строк видно непонимание темы самим автором.

3.Код, полученный с сайта evil.com, заставляет ваш браузер тайно отправить запрос Get /api/account на bank.com.

Ну и все признаки текста, сгенерированного ИИ. Печально.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации