Реальный пиарСоздание сайтовБезопасность → CSRF: совершение действия от имени пользователя

CSRF: совершение действия от имени пользователя

что такое браузер

Атакой CSRF (Cross-Site Request Forgery) называется отправка запроса через браузер пользователя с одного сайта на другой, так что атакуемый сайт исполняет этот запрос, как будто он поступил от пользователя.

Лучше попробовать понять принцип этой атаки на примере:

Есть сайт A, пусть это форум, на нем зарегистрированные пользователи могут оставлять сообщения. Для отправки сообщения используется обычная HTML-форма с <textarea> и кнопкой "Отправить".

Есть сайт B, в котором сделана копия этой HTML-формы для отправки сообщения, а в атрибуте action у формы прописан адрес сайта А.

Теперь, если некто, залогинившись на форуме А и получив сессионную cookie, зайдет на сайт B, заполнит форму там и нажмет "Отправить", его сообщение пойдет на форум А, словно оно было отправлено не снаружи, а с самого форума. Пользователь-то уже залогинен.

Остается только заманить пользователя с форума на сайт B и отправить эту форму автоматически – с помощью JavaScript-метода submit(), к примеру.

Первый напрашиващийся способ – проверять поле Referer. Ведь в случае прихода пользователя снаружи, в этом поле будет адрес не форума А, а сайта В.

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

Есть, однако, и другой способ. Дело в том, что на сайте В смогли сделать копию формы с форума А только потому, что она, эта форма, у всех пользователей была одинакова. Стоит добавить в нее невидимое (type="hidden") поле с каким-то уникальным для каждого посетителя параметром, и проверять его при получении этой формы, как мы сможем сказать, что эта форма отправлена с нашего форума А, а не со стороннего ресурса.

Еще один способ: спрашивать ввод CAPTCHA при совершении критических действий вроде смены пароля или перевода денег (как сделано в WebMoney).


Источник: http://www.captcha.ru

Рекомендуем



XSS и UTF-7 Отдельно стоит упомянуть использование для XSS-атаки скриптов, написанных в кодировке UTF-7


Отправка email с сайта Для сокрытия адреса почтового ящика от спамеров часто используются форму обратной связи, информация из которой поступает серверному скрипту, который уже сам отправляет почту адресату по известному только скрипту адресу, к примеру, php-функцией mail


XSS и HTML Такая фильтрация довольно сложна, ее сложность усугубляется тем, что браузеры допускают значительные вольности при написании HTML-разметки, стилей и скриптов, могут прощать отсутствующие или незакрытые кавычки, кодированные различными алгоритмами символы, лишние пробельные символы и пр