|
|
|
|
|
для: deimand
(18.10.2011 в 12:38)
| | Для ссылок насколько я знаю токены обычно не используют, но по сути - разницы в данном случае особой быть не должно. | |
|
|
|
|
|
|
|
для: Гость
(18.10.2011 в 07:39)
| | Что касается формы, здесь я с Вами согласен и даже продуманный антибот решает эту проблему, а если "слушают", то действительно ничего не сделать.
Но это Вы описали работу форм, а CSRF включает в себя намного больше.
Например на странице находится список аудиозаписей, напротив каждой из них есть кнопка удалить. Кнопка передает серверу запрос типа file/?mod=deleteAudio&idAudio=3251. Решением проблемы могла бы быть подмена общедоступного id, но бывает еще кнопка удалить весь альбом, которая не привязывается к какому либо id. Как таковой уязвимости и нет, так как самому приложению ничего не угрожает, но будет очень неприятно, потерять какие либо данные.
Что же получается, просто добавить токен в ссылку и дело в шляпе?
Не может же быть все так просто? :) | |
|
|
|
|
|
|
|
для: deimand
(18.10.2011 в 06:48)
| | Мы это обсуждаем в контексте CSRF, верно? Тогда давайте разберемся что это такое - а это отправка запроса на атакуемый ресурс от лица якобы жертвы. Т.е. у нас есть форма отправки сообщения, содержащее для авторизованного пользователя (определяем по кукам) только поле text. Злоумышленник создает страницу, при заходе на которую отправляется запрос с заполненным полем text на атакуемый ресурс. Если при этом тот кто зашел на страницу злоумышленника авторизован на атакуемом ресурсе - то от его имени на нем (атакуемом ресурсе) разместиться сообщение злоумышленника. Для борьбы с этим существуют токены (ключи) - они генерируются сервером и вставляются в каждый важный (защищаемый) запрос. При выполнении действий сервер проверяет ключи и если они не совпадают - то действие считается совершенным не от имени пользователя и отменяется.
Поскольку ключ злоумышленник заранее знать не может (так как они для всех уникальны, и он не снифает ваш траффик - т.к. если он его слушает, то вам токены уже мало чем помогут) то запрос с отправкой просто переменной text закончится провалом.
Поэтому в данном контексте не должно быть важно: генерируются уникальный токен для каждой формы или один для всех (в рамках одной сессии). Важно что бы злоумышленник не мог узнать токен жертвы (в чем одноразовые токены конечно предоставляют большую защищенность, но помоему это слегка надуманный уровень защиты - если злоумышленник может получить токен, то он может получить гораздо больше и ему просто не нужно будет возиться с токенами в 99% ситуаций).
PS: еще не плохой и довольно надежный вариант проверять значение HTTP_REFERER. Но тут тоже есть моменты вроде: даже если мы проверяем HTTP_REFERER, то в купе с XSS на сайте можно опять получить CSRF. + Не все браузеры (особенно если это отдельно настроить) его заполняют и следовательно при пустом поле HTTP_REFERER мы вынуждены пропускать запросы, что опять открывает CSRF. Хотя стоит ли так париться ради 0,05% процента пользователей - я не уверен) | |
|
|
|
|
|
|
|
для: Гость
(18.10.2011 в 05:47)
| | Если взломщик может получить идентификатор сессии, то само собой разумеется, что он получит и токен. Мне кажется, все серьезней чем Вы думаете. | |
|
|
|
|
|
|
|
для: Гость
(18.10.2011 в 05:47)
| | Видимо я чего-то недопонимаю. Надо попробовать повзламывать, от цэ дело будет)) | |
|
|
|
|
|
|
|
для: r2Ccube
(14.10.2011 в 17:47)
| | Не обязательно использовать кучу разных токенов. Я использую один уникальный токен на сессию (генерируется автоматически при авторизации) что бы не париться с сохранением кучи токенов часть из которых к тому же будет просто лежать грузом. Не думаю что это дает сильный провал в безопасности, по сравнению с идеей "одна форма - один токен". | |
|
|
|
|
|
|
|
для: cheops
(14.10.2011 в 19:19)
| | . | |
|
|
|
|
|
|
|
для: sl1p
(15.10.2011 в 01:17)
| | Вопрос не в этом, а в том как защититься. Поможет ли один токен на сеанс? На вкладку? Или на каждую страницу свой токен генерить? Я не взломщик, поэтому не знаю как действует злоумышленник.
С другой стороны если генерировать токен на каждый урл имеющий форму или ссылку на обработчик - это сколько же лишней информации в сессии придется хранить. | |
|
|
|
|
|
|
|
для: deimand
(15.10.2011 в 01:12)
| | каким образом может появиться такой фрейм на сайте?) | |
|
|
|
|
|
|
|
для: cheops
(14.10.2011 в 19:19)
| | Нет, вкладки не при чем, это я рассуждал о сбособах защиты от CSRF уязвимостях.
Я авторизован на сайте (атакуемом), который авторизованным пользователям стартует сессию. Пока я владею идентификатором сессии - сайт везде мне дает зеленый свет.
Далее, злоумышленник подготавливает для меня особый скрипт, засовывает его во фрейм и ставит к себе на сайт (атакующий).
Для того, чтобы пользователь мог оставаться залогиненым на своем любимом ресурсе, браузеры автоматически отправляют Cookie тому серверу, который их установил.
Сервер получает запрос, смотрит Cookie, убеждается в том, что сессия связанная с данными Cookie существует и выполняет действие от имени пользователя, связанного с этой сессией.
Таким образом, если из браузера пользователя отправить запрос, то вместе с ним отправятся и Cookie. И сервер будет думать, что имеет дело с залогиненым пользователем ресурса и действия выполнит от его имени. А заставить браузер отправить запрос можно и со сторонней страницы. И если сервер такие запросы будет обрабатывать так же, как и запросы со своих страниц — это и есть уязвимость.
Как с этим бороться?
Если Вы мне объясните как правильно обойти эту уязвимость, возможно вопрос вкладок отпадет.
P.S. Опа, запалился из разных аккаунтов :) | |
|
|
|
|