CSRF (Cross-Site Request Forgery) — атака, при которой браузер пользователя отправляет нежелательный запрос на сайт, где пользователь уже вошёл в систему. Для Joomla это особенно важно при сохранении данных и выполнении действий в учётной записи.
Почему возможна подделка запроса
Браузер может автоматически приложить cookie к запросу. Если сервер считает самого наличия сессии достаточным подтверждением намерения, действие может выполниться без согласия человека. Атакующему не обязательно знать пароль или прочитать ответ.
Защита в Joomla
Формы Joomla используют токен, который сервер проверяет до выполнения действия. Разработчику расширения важно не только вывести токен в форме, но и проверить его в обработчике. AJAX-запросы тоже должны передавать необходимые данные для проверки.
Изменения состояния не следует выполнять через обычный GET-запрос. SameSite для cookie и проверка контекста запроса дополняют защиту. Один только переход на POST не заменяет проверку токена.
Практическая проверка
После изменения форм Joomla проверяют отправку с действующим токеном и корректный отказ при его отсутствии. Кэшированная форма со старым токеном может вызывать ошибку даже у обычного посетителя. Исправлять такой сбой отключением проверки нельзя.
CSRF отличается от XSS, при котором посторонний код выполняется в контексте страницы. Защита от CSRF также не заменяет проверку прав пользователя на конкретную операцию.
Вывод
Защита от CSRF подтверждает допустимость запроса в текущем сеансе. Надёжная обработка сочетает токены, подходящие методы HTTP и проверку полномочий.