Это старая версия Справка/QS/CSRFFunctions за 2017-12-27 13:35:09..
Защита от CSRF-атак
Подробнее об атаке: Википедия, Хабрахабр
Функции защиты от атак встроены в QS начиная с версии 5.3
Как защищаться от CSRF (минимум)
При работе с формой:
1. заменить вызовы FormOpen на csrfFormOpen – эта конструкция добавит csrf-токен в форму
2. Перед обработкой данных с формы сделать следующую конструкцию:
<?php
if(($csrfError = $this->csrfCheckStandart()) === TRUE) {
// здесь обрабатываем запрос с формы - проверку мы прошли
} else {
$error = $csrfError;
}
?>
При работе с ссылками
1. заменить генерацию ссылок функцией Href на csrfHref – эта конструкция добавит csrf-токен в ссылку
2. Шаг идентичен работе с формой – т.е. добавляем проверку в обработку
Встроенная защита
Защита уже встроена в следующие части системы:
- OneButtonAction (генерация однокнопочных форм)
- actions/adminviewtable, adminedittable (стандартные формы просмотра и редактирования таблиц)
Продвинутый вариант
Есть валидация токенов по времени
<?php
if(($csrfError = $this->csrfCheckStandart(60)) === TRUE) {
// токен будет валидным в течении 60 секунд, т.е. форма должна быть отправлена за это время, иначе будет ошибка
} else {
$error = $csrfError;
}
?>
Функции, касающиеся CSRF, находятся в конце файла classes/extension.php