Разве CSRF не является проблемой безопасности браузера? - PullRequest
10 голосов
/ 22 октября 2008

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

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

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

О CSRF:

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

Ответы [ 6 ]

8 голосов
/ 22 октября 2008

Почему браузер не отправляет куки?

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

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

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

<Ч />

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

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

4 голосов
/ 22 октября 2008

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

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

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

2 голосов
/ 22 октября 2008

Многие старые протоколы имеют большие дыры в безопасности - вспомните недавно обнаруженные уязвимости DNS . Как и в основном любая сетевая безопасность, это ответственность конечных точек; да, это отстой, что мы должны исправить это сами, но это гораздо сложнее исправить на уровне браузера. Есть некоторые очевидные (image выглядит чертовски подозрительно, верно?), Но всегда будут крайние случаи. (Возможно, это все-таки GD-скрипт в PHP-файле.) А как насчет AJAX-запросов? И так далее ...

2 голосов
/ 22 октября 2008

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

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

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

<img src="http://domain.com/show_picture_if_authenticated" />
1 голос
/ 22 октября 2008

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

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

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

0 голосов
/ 01 ноября 2008

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

Смотрите это:

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

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

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

...