Как отключить mod_security в файле .htaccess?
Как отключить mod_security
с помощью файла .htaccess
на сервере Apache?
Я использую WordPress в своем личном домене и размещаю сообщение, содержимое которого имеет какой-то блок кода, и, согласно моему хостинг-провайдеру, сказал, что mod_security
дает ошибку, а мой IP-адрес перешел в брандмауэр из-за mod_security
.
Итак, я хочу отключить mod_security
с помощью файла .htaccess
.
Ответы
Ответ 1
Это можно сделать, но, скорее всего, ваш хост внедрил mod_security
по какой-то причине. Убедитесь, что они одобряют, что вы отключили его для своего собственного сайта.
Тем не менее, это должно сделать это;
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Ответ 2
На некоторых серверах и веб-хостах можно отключить 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>
Ответ 3
Просто чтобы обновить этот вопрос для mod_security 2.7. 0+ - они отключили возможность смягчать modsec через htaccess, если вы не скомпилируете его с флагом --enable-htaccess-config
. Большинство хостов не используют эту опцию компилятора, поскольку она обеспечивает слишком слабую безопасность. Вместо этого vhosts в httpd.conf - это ваш вариант для управления modsec.
Даже если вы компилируете modsec с помощью htaccess, доступно меньше директив. SecRuleEngine
больше не может использоваться там, например. Вот список, который можно использовать по умолчанию в htaccess, если он разрешен (имейте в виду, что хост может дополнительно ограничить этот список AllowOverride
):
- SecAction
- SecRule
- SecRuleRemoveByMsg
- SecRuleRemoveByTag
- SecRuleRemoveById
- SecRuleUpdateActionById
- SecRuleUpdateTargetById
- SecRuleUpdateTargetByTag
- SecRuleUpdateTargetByMsg
Больше информации на официальной вики Modsec
В качестве дополнительного примечания для пользователей 2.x: IfModule
теперь должен искать mod_security2.c
вместо старого mod_security.c
Ответ 4
Если вышеупомянутое решение не работает, попробуйте это:
<IfModule mod_security.c>
SecRuleEngine Off
SecFilterInheritance Off
SecFilterEngine Off
SecFilterScanPOST Off
SecRuleRemoveById 300015 3000016 3000017
</IfModule>
Ответ 5
С некоторыми веб-хостами, включая NameCheap, невозможно отключить ModSecurity, используя .htaccess
. Единственный вариант - связаться с технической поддержкой и попросить их изменить конфигурацию для вас.
Ответ 6
В файле .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>
Ответ 7
Для тех, кто просто хочет обойти страницу ОШИБКИ для отображения контента на виртуальном хостинге. Вы можете попробовать использовать редирект в файле .htaccess. Если это, скажем, ошибка 406, на UnoEuro это, похоже, не сработало, просто отключив безопасность. Поэтому я использовал это вместо:
ErrorDocument 406 /
Тогда вы всегда можете изменить статус ошибки, используя PHP. Но учтите, что в моем случае это означает, что я открываю дверь для SQL-инъекций, поскольку я обхожу WAF. Поэтому вам необходимо убедиться, что вы либо используете свои собственные меры безопасности, либо включите безопасность снова как можно скорее.