Как отключить mod_security
, используя файл .htaccess
на сервере Apache?
Я использую WordPress в своем личном домене и размещаю сообщение, содержимое которого имеет некоторый блок кода, и, согласно моему хостинг-провайдеру, говорит, что mod_security
дает ошибку, и мой IP-адрес перешел в брандмауэр из-за mod_security
.
Поэтому я хочу отключить mod_security
, используя файл .htaccess
.
Это можно сделать, но, скорее всего, ваш хост внедрил mod_security
по какой-то причине. Убедитесь, что они одобряют вас, отключая его для вашего собственного сайта.
Тем не менее, это должно сделать это;
<IfModule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </IfModule>
Если вышеприведенное решение не работает, попробуйте следующее:
<IfModule mod_security.c> SecRuleEngine Off SecFilterInheritance Off SecFilterEngine Off SecFilterScanPOST Off SecRuleRemoveById 300015 3000016 3000017 </IfModule>
Просто обновить этот вопрос для mod_security 2.7.0+ – они отключили возможность смягчать modsec через htaccess, если вы не скомпилируете его с флагом --enable-htaccess-config
. Большинство хостов не используют этот параметр компилятора, так как он обеспечивает слишком слабую защиту. Вместо этого vhosts в httpd.conf – это ваша опция для управления modsec.
Даже если вы компилируете modsec с помощью htaccess mitigation, существует меньше директив. SecRuleEngine
больше не может использоваться там, например. Вот список, который можно использовать по умолчанию в htaccess, если разрешено (помните, что хост может дополнительно ограничить этот список с помощью AllowOverride
):
- SecAction - SecRule - SecRuleRemoveByMsg - SecRuleRemoveByTag - SecRuleRemoveById - SecRuleUpdateActionById - SecRuleUpdateTargetById - SecRuleUpdateTargetByTag - SecRuleUpdateTargetByMsg
Дополнительная информация о официальной викторине modsec
В качестве дополнительной заметки для пользователей 2.x: IfModule
теперь должен искать mod_security2.c
вместо старого mod_security.c
На некоторых серверах и веб-хостах можно отключить ModSecurity через .htaccess
, но только в полном объеме – вы не можете отключить отдельные правила.
Вместо того, чтобы отключать его для всего вашего сайта, лучше всего ограничить это конкретными URL-адресами. Вы можете указать, какие URL-адреса должны соответствовать регулярному выражению в инструкции <If>
ниже …
### DISABLE mod_security firewall ### Some rules are currently too strict and are blocking legitimate users ### We only disable it for URLs that contain the regex below ### The regex below should be placed between "m#" and "#" ### (this syntax is required when the string contains forward slashes) <IfModule mod_security.c> <If "%{REQUEST_URI} =~ m#/admin/#"> SecFilterEngine Off SecFilterScanPOST Off </If> </IfModule>
В файле .htaccess в корневом каталоге сайта измените следующую строку:
<ifmodule mod_security.c> SecFilterEngine Off SecFilterScanPOST Off </ifmodule> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
С некоторыми веб-хостами, включая NameCheap , невозможно отключить ModSecurity, используя .htaccess
. Единственный вариант – связаться с технической поддержкой и попросить их изменить конфигурацию для вас.