Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Токены

Сообщения:  [1-10]   [11-12] 

 
 автор: Гость   (19.10.2011 в 05:31)   письмо автору
 
   для: deimand   (18.10.2011 в 12:38)
 

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

  Ответить  
 
 автор: deimand   (18.10.2011 в 12:38)   письмо автору
 
   для: Гость   (18.10.2011 в 07:39)
 

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

Но это Вы описали работу форм, а CSRF включает в себя намного больше.
Например на странице находится список аудиозаписей, напротив каждой из них есть кнопка удалить. Кнопка передает серверу запрос типа file/?mod=deleteAudio&idAudio=3251. Решением проблемы могла бы быть подмена общедоступного id, но бывает еще кнопка удалить весь альбом, которая не привязывается к какому либо id. Как таковой уязвимости и нет, так как самому приложению ничего не угрожает, но будет очень неприятно, потерять какие либо данные.

Что же получается, просто добавить токен в ссылку и дело в шляпе?
Не может же быть все так просто? :)

  Ответить  
 
 автор: Гость   (18.10.2011 в 07:39)   письмо автору
 
   для: deimand   (18.10.2011 в 06:48)
 

Мы это обсуждаем в контексте CSRF, верно? Тогда давайте разберемся что это такое - а это отправка запроса на атакуемый ресурс от лица якобы жертвы. Т.е. у нас есть форма отправки сообщения, содержащее для авторизованного пользователя (определяем по кукам) только поле text. Злоумышленник создает страницу, при заходе на которую отправляется запрос с заполненным полем text на атакуемый ресурс. Если при этом тот кто зашел на страницу злоумышленника авторизован на атакуемом ресурсе - то от его имени на нем (атакуемом ресурсе) разместиться сообщение злоумышленника. Для борьбы с этим существуют токены (ключи) - они генерируются сервером и вставляются в каждый важный (защищаемый) запрос. При выполнении действий сервер проверяет ключи и если они не совпадают - то действие считается совершенным не от имени пользователя и отменяется.

Поскольку ключ злоумышленник заранее знать не может (так как они для всех уникальны, и он не снифает ваш траффик - т.к. если он его слушает, то вам токены уже мало чем помогут) то запрос с отправкой просто переменной text закончится провалом.

Поэтому в данном контексте не должно быть важно: генерируются уникальный токен для каждой формы или один для всех (в рамках одной сессии). Важно что бы злоумышленник не мог узнать токен жертвы (в чем одноразовые токены конечно предоставляют большую защищенность, но помоему это слегка надуманный уровень защиты - если злоумышленник может получить токен, то он может получить гораздо больше и ему просто не нужно будет возиться с токенами в 99% ситуаций).

PS: еще не плохой и довольно надежный вариант проверять значение HTTP_REFERER. Но тут тоже есть моменты вроде: даже если мы проверяем HTTP_REFERER, то в купе с XSS на сайте можно опять получить CSRF. + Не все браузеры (особенно если это отдельно настроить) его заполняют и следовательно при пустом поле HTTP_REFERER мы вынуждены пропускать запросы, что опять открывает CSRF. Хотя стоит ли так париться ради 0,05% процента пользователей - я не уверен)

  Ответить  
 
 автор: deimand   (18.10.2011 в 06:48)   письмо автору
 
   для: Гость   (18.10.2011 в 05:47)
 

Если взломщик может получить идентификатор сессии, то само собой разумеется, что он получит и токен. Мне кажется, все серьезней чем Вы думаете.

  Ответить  
 
 автор: deimand   (18.10.2011 в 06:37)   письмо автору
 
   для: Гость   (18.10.2011 в 05:47)
 

Видимо я чего-то недопонимаю. Надо попробовать повзламывать, от цэ дело будет))

  Ответить  
 
 автор: Гость   (18.10.2011 в 05:47)   письмо автору
 
   для: r2Ccube   (14.10.2011 в 17:47)
 

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

  Ответить  
 
 автор: deimand   (18.10.2011 в 02:31)   письмо автору
 
   для: cheops   (14.10.2011 в 19:19)
 

.

  Ответить  
 
 автор: r2Ccube   (15.10.2011 в 12:22)   письмо автору
 
   для: sl1p   (15.10.2011 в 01:17)
 

Вопрос не в этом, а в том как защититься. Поможет ли один токен на сеанс? На вкладку? Или на каждую страницу свой токен генерить? Я не взломщик, поэтому не знаю как действует злоумышленник.

С другой стороны если генерировать токен на каждый урл имеющий форму или ссылку на обработчик - это сколько же лишней информации в сессии придется хранить.

  Ответить  
 
 автор: sl1p   (15.10.2011 в 01:17)   письмо автору
 
   для: deimand   (15.10.2011 в 01:12)
 

каким образом может появиться такой фрейм на сайте?)

  Ответить  
 
 автор: deimand   (15.10.2011 в 01:12)   письмо автору
 
   для: cheops   (14.10.2011 в 19:19)
 

Нет, вкладки не при чем, это я рассуждал о сбособах защиты от CSRF уязвимостях.

Я авторизован на сайте (атакуемом), который авторизованным пользователям стартует сессию. Пока я владею идентификатором сессии - сайт везде мне дает зеленый свет.

Далее, злоумышленник подготавливает для меня особый скрипт, засовывает его во фрейм и ставит к себе на сайт (атакующий).

Для того, чтобы пользователь мог оставаться залогиненым на своем любимом ресурсе, браузеры автоматически отправляют Cookie тому серверу, который их установил.

Сервер получает запрос, смотрит Cookie, убеждается в том, что сессия связанная с данными Cookie существует и выполняет действие от имени пользователя, связанного с этой сессией.

Таким образом, если из браузера пользователя отправить запрос, то вместе с ним отправятся и Cookie. И сервер будет думать, что имеет дело с залогиненым пользователем ресурса и действия выполнит от его имени. А заставить браузер отправить запрос можно и со сторонней страницы. И если сервер такие запросы будет обрабатывать так же, как и запросы со своих страниц — это и есть уязвимость.

Как с этим бороться?

Если Вы мне объясните как правильно обойти эту уязвимость, возможно вопрос вкладок отпадет.

P.S. Опа, запалился из разных аккаунтов :)

  Ответить  

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования