Разве CSRF не является проблемой безопасности браузера?

StackOverflow https://stackoverflow.com/questions/224049

  •  03-07-2019
  •  | 
  •  

Вопрос

Что касается атак с подделкой межсайтовых запросов (CSRF), если файлы cookie являются наиболее используемым методом аутентификации, почему веб-браузеры разрешают отправлять файлы cookie некоторого домена (и в этот домен) со страницы, созданной из другого домена?

Разве CSRF нельзя легко предотвратить в браузере, запретив такое поведение?

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

О CSRF:

Редактировать:Я думаю, что файлы cookie не должны отправляться по http POST в приведенном выше случае.Это поведение браузера, которое меня удивляет.

Это было полезно?

Решение

Почему браузер не отправляет файлы cookie?

Сайт А (http://www.sitea.com) устанавливает файл cookie для пользователя.

Пользователь переходит на сайт B (http://www.siteb.com).Сайт B имеет интеграцию с сайтом A - нажмите здесь, чтобы что-то сделать на сайте A!Пользователь нажимает "здесь".

Насколько может судить браузер, пользователь принимает сознательное решение отправить запрос на сайт A, поэтому он обрабатывает его так же, как обрабатывал бы любой запрос на сайт A, и это включает отправку файлов cookie сайта A в запросе на сайт A.


Редактировать:Я думаю, главная проблема здесь заключается в том, что вы считаете, что существует различие между файлами cookie аутентификации и другими файлами cookie.Файлы cookie могут использоваться для хранения чего угодно - пользовательских настроек, вашего последнего рекордного балла или токена сеанса.Браузер понятия не имеет, для чего используется каждый файл cookie.Я хотеть мои файлы cookie всегда должны быть доступны сайту, который их установил, и я хочу, чтобы сайт убедился, что он принимает необходимые меры предосторожности.

Или вы хотите сказать, что если вы выполните поиск yahoo по запросу "gmail", а затем нажмете на ссылку, которая приведет вас к http://mail.google.com, вы не должны входить в систему, даже если вы попросили gmail сохранить ваш вход в систему, потому что вы перешли по ссылке с другого сайта?

Другие советы

Дело не в том, что браузер отправляет файл cookie во внешний домен или с него, а в том факте, что вы прошли проверку подлинности, а сайт не проверяет источник запроса, поэтому он обрабатывает его так, как если бы запрос пришел с сайта.

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

Редактировать:чтобы было понятно, ваш файл cookie не рассылается по доменам.

Я не знаю, много ли браузер может сделать в этой ситуации, поскольку цель XSRF-атаки - направить браузер в другую точку приложения, которая могла бы выполнить что-то плохое.К сожалению, браузер понятия не имеет, является ли запрос, на отправку которого он направлен, вредоносным или нет.Например, учитывая классический пример XSRF:

<img src="http://domain.com/do_something_bad" />

браузеру не очевидно, что происходит что-то плохое.В конце концов, каково это - знать разницу между тем и этим:

<img src="http://domain.com/show_picture_if_authenticated" />

Многие старые протоколы имеют большие дыры в безопасности - вспомните недавно обнаруженный Уязвимости DNS.Как и в принципе любая сетевая безопасность, за это отвечают конечные точки;да, это отстой, что нам приходится исправлять это самим, но это намного сложнее исправить на уровне браузера.Есть несколько очевидных (<img src="logoff.php"> выглядит чертовски подозрительно, не так ли?), Но всегда будут крайние случаи.(Возможно, в конце концов, это GD-скрипт в PHP-файле.) Как насчет AJAX-запросов?И так далее...

Файлы cookie для одного сайта никогда не отправляются на другой сайт.Фактически, для реализации успешной CSRF-атаки злоумышленнику не обязательно иметь доступ к этим файлам cookie.

По сути, злоумышленник обманом заставляет пользователя, который уже вошел на целевой веб-сайт, перейти по ссылке или загрузить изображение, которое будет что-то делать на целевом сайте с учетными данными этого пользователя.

То есть пользователь выполняет действие, а злоумышленник обманом заставил пользователя сделать это.

Некоторые люди говорили, что, по их мнению, браузер мало что может сделать.

Видишь это:

http://people.mozilla.org /~bsterne/content-security-policy/origin-header-proposal.html

Это обзор предложения по новому HTTP-заголовку, который поможет смягчить атаки CSRF.

Предлагаемое имя заголовка - "Origin", и это в основном заголовок "Referer" за вычетом пути и т.д.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top