Когда клиент посещает мой PHP-сайт, размещенный на моем личном сервере, и включает переменную в URL-адрес (пример https://www.example.com/test.php?t=somevalue
), modsecurity отображает сообщение об ошибке в файле error.log
.
Характеристики:
Server OS: Linux server 3.2.0-4-486 #1 Debian 3.2.57-3 i686
Apache: version 2.2.22
PHP: version 5.4.4-14+deb7u9
Modsecurity: version 2.8.0
Сообщение об ошибке:
ModSecurity: Warning. Match of "eq 1" against "&ARGS:CSRF_TOKEN" required. [file "/usr/share/modsecurity-crs/optional_rules/modsecurity_crs_43_csrf_protection.conf"] [line "31"] [id "981143"] [msg "CSRF Attack Detected - Missing CSRF Token."]
Этот вопрос SO похож на мой, за исключением того, что я получаю сообщение об ошибке только тогда, когда браузер клиента добавляет переменную.
Modsecurity настраивается с помощью OWASP base_rules
и optional_rules
. Я не использую символические ссылки для них.
Единственное, что необычно в конфигурации моего сервера, это то, что он использует самозаверяющий SSL-сертификат, но я не думаю, что это имеет какое-то отношение к проблеме.
Ошибка отображается независимо от того, что содержит файл PHP, и не возникает с файлами HTML.
Что вызывает эту ошибку и как ее устранить?
Если это отсутствие токена CSRF, как мне его добавить?
base_rules
иoptional_rules
. Я добавляю это к моему вопросу... - person HelpingHand   schedule 06.06.2014[line "31"]
- файл тоже назван. С этой строкой и заданным правилом обратитесь к документации mod_security, а также к проекту/документам OWASP, которые касаются этого (если есть). Я предполагаю, что кто-то придумал что-то, чтобы вставить туда правило, и вы, возможно, больше всего выиграете, узнав об этом. - person hakre   schedule 06.06.2014