Ошибка "Доступ запрещен": возможная CSRF-атака¶
CSRF (межсайтовая подделка запроса) — это атака, при которой злоумышленник заставляет авторизованного пользователя выполнить нежелательные действия в веб-приложении. Такие атаки направлены на изменение состояния системы (например, перевод средств, смена email), а не на кражу данных, так как злоумышленник не может увидеть результат запроса. Используя социальную инженерию (рассылку ссылок через email или чаты), атакующий может заставить пользователей выполнить нужные ему операции. Если жертвой становится администратор, это может привести к полному компрометированию приложения.
Причина ошибки в CS-Cart¶
В большинстве случаев ошибка возникает из-за директивы PHP max_input_vars
на сервере. Если значение этого параметра слишком мало, сервер обрезает запрос. Когда параметр security_hash попадает в обрезанную часть, появляется сообщение об ошибке.
Временное решение¶
Это не самый рискованный путь, но вы можете отключить защиту от CSRF, изменив параметр anti_csrf в файле config.local.php
(пример на скриншоте):
Риски¶
Директива max_input_vars
ограничивает количество полей в запросе. По умолчанию она установлена на 10000, что предотвращает отправку чрезмерно больших запросов. Однако:
- Если злоумышленник отправит множество запросов, это может вызвать сбои в работе CS-Cart или привести к DoS-атаке.
- CS-Cart, в отличие от других CMS, пытается обработать большой запрос целиком, а не разбивает его на части. Это и вызывает ошибку.
Вывод¶
Увеличение max_input_vars
до 20000 или более — опасное решение. Вместо этого мы рекомендуем не менять значение без крайней необходимости. А если изменение было сделано — вернуть настройки к исходным как можно скорее.