Перейти к содержанию

Ошибка "Доступ запрещен": возможная CSRF-атака

CSRF (межсайтовая подделка запроса) — это атака, при которой злоумышленник заставляет авторизованного пользователя выполнить нежелательные действия в веб-приложении. Такие атаки направлены на изменение состояния системы (например, перевод средств, смена email), а не на кражу данных, так как злоумышленник не может увидеть результат запроса. Используя социальную инженерию (рассылку ссылок через email или чаты), атакующий может заставить пользователей выполнить нужные ему операции. Если жертвой становится администратор, это может привести к полному компрометированию приложения.

Access website email

Причина ошибки в CS-Cart

В большинстве случаев ошибка возникает из-за директивы PHP max_input_vars на сервере. Если значение этого параметра слишком мало, сервер обрезает запрос. Когда параметр security_hash попадает в обрезанную часть, появляется сообщение об ошибке.

Временное решение

Это не самый рискованный путь, но вы можете отключить защиту от CSRF, изменив параметр anti_csrf в файле config.local.php (пример на скриншоте):

CSRF

Риски

Директива max_input_vars ограничивает количество полей в запросе. По умолчанию она установлена на 10000, что предотвращает отправку чрезмерно больших запросов. Однако:

  • Если злоумышленник отправит множество запросов, это может вызвать сбои в работе CS-Cart или привести к DoS-атаке.
  • CS-Cart, в отличие от других CMS, пытается обработать большой запрос целиком, а не разбивает его на части. Это и вызывает ошибку.

Вывод

Увеличение max_input_vars до 20000 или более — опасное решение. Вместо этого мы рекомендуем не менять значение без крайней необходимости. А если изменение было сделано — вернуть настройки к исходным как можно скорее.

Полезные материалы