59
59
Рассмотрим защиту самого сайта.
CSRF — это вид атак на посетителей веб-сайтов, использующий
недостатки протокола HTTP. Если жертва заходит на сайт, созданный
злоумышленником, от её лица тайно отправляется запрос на другой сервер
(например, на сервер платёжной системы), осуществляющий некую
вредоносную операцию (например, перевод денег на счёт злоумышленника). Для
осуществления данной атаки, жертва должна быть авторизована на том сервере,
на который отправляется запрос, и этот запрос не должен требовать какого-либо
подтверждения со стороны пользователя.
Данный тип атак, вопреки распространённому заблуждению, появился
достаточно давно: первые теоретические рассуждения появились в 1988 году, а
первые уязвимости были обнаружены в 2000 году.
Одно из применений CSRF — эксплуатация пассивных XSS,
обнаруженных на другом сервере. Так же возможны отправка спама от лица
жертвы и изменение каких-либо настроек учётных записей на других сайтах
(например, секретного вопроса для восстановления пароля).
Для избежания CSRF-уязвимостей используются уникальные ссылки для
действий по изменению данных. В CMS WordPress используется метод
токенизации ссылок. Это означает, что к ссылке активного действия,
прибавляется уникальный параметр, который проверяется при осуществлении
самого действия. В CMS WordPress сгенерировать такой параметр можно
функцией wordpress_get_token(). Проверить — wordpress_valid_token(). Токен
генерируется на основе подаваемого значения, сессии пользователя, а также
приватного ключа сайта, что практически сводит на ноль вероятность генерации
вредителем правильного токена.
Пример использования токена в форме авторизации пользователя
приведен в листинге, представленном в Приложении 1. При регистрации
пользователей и работе с материалами производится проверка правильности
всех введенных данных посредством регулярных выражений (Приложение 2).
Каждому пользователю системы отводится определенная роль. Таблица
roles в БД содержит список ролей пользователей системы.
Роли системы: