Защита форм
Уязвимости сайта – недостатки в системе, позволяющие злоумышленнику навредить работе сайта или похитить персональные данные пользователей.
Один из основных типов уязвимостей - это атака на клиентов веб-приложения, такая как, межсайтовая подделка запроса (CSRF или Сross Site Request Forgery – «межсайтовая подделка запроса»). Если каким-либо образом заставить браузер пользователя сделать запрос к уязвимому серверу, браузер сделает этот запрос с текущими cookie данного пользователя.
CSRF – вид атак на посетителей веб-сайтов, использующий недостатки протокола HTTP. Если жертва заходит на сайт, созданный злоумышленником, от её лица тайно отправляется запрос на другой сервер (например, на сервер платёжной системы), осуществляющий некую вредоносную операцию (например, перевод денег на счёт злоумышленника).Для осуществления данной атаки жертва должна быть аутентифицирована на том сервере, на который отправляется запрос, и этот запрос не должен требовать какого-либо подтверждения со стороны пользователя, которое не может быть проигнорировано или подделано атакующим скриптом.
Описание
Наш модуль позволяет усилить проверку отправляемых форм всех редакций 1С-Битрикс: для каждой формы генерируется короткоживущий csrf-токен проверяемый при отправке. В отличии от базовой проверки через bx_sessid токен выдается на конкретную форму и ограниченное время, что позволяет даже при перехвате токена минимизировать возможные действия с ним.
Защищает от межсайтовой подделка запроса. Даже если запрос произойдет с текущими cookie пользователя у злоумышленника не будет доступа к токену для отправки форм от его имени.
Использование
Для подключения формы из модуля Веб-формы
<*>Включите проверку форм в настройках модуля
<*>Задайте уникальный секрет для генерации кодов
<*>Задайте желаемое время жизни токена в секундах
<*>Выберите необходимую форму из списка
<*>Добавьте в шаблон формы input с токеном <?= Delement\Csrf\DelementCsrfHelper::getCsrfInput($arParams["WEB_FORM_ID"]); ?>
Для подключения к собственным формам
<*>Вставьте input с токеном в вашу форму - токен можно сгенерировать через Delement\Csrf\DelementCsrfHelper::getCsrf(<уникальный id формы>);
<*>Добавьте в скрипте обрабатывающем вашу форму проверку через Delement\Csrf\DelementCsrfHelper::validateCsrf(<уникальный id формы>)
Персональные рекомендации