如何在Apache服务器上使用mod_security
文件来禁用.htaccess
?
我在个人域名中使用WordPress并发布内容包含一些代码块的帖子,根据我的托管服务提供商说mod_security
出错,我的IP因mod_security
而进入防火墙
所以我想使用mod_security
文件禁用.htaccess
。
答案 0 :(得分:42)
可以这样做,但很可能是您的主机因某种原因而实施了mod_security
。确保他们批准你为自己的网站禁用它。
那说,应该这样做;
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
答案 1 :(得分:6)
在某些服务器和网络主机上,可以通过.htaccess
禁用ModSecurity,但仅限于完整 - 您无法禁用单个规则。
最好将此限制为特定的网址,而不是为整个网站禁用它。您可以通过以下<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>
答案 2 :(得分:4)
只是为mod_security 2.7.0+更新这个问题 - 他们关闭了通过htaccess缓解modsec的能力,除非你使用--enable-htaccess-config
标志进行编译。大多数主机不使用此编译器选项,因为它允许过于宽松的安全性。相反,httpd.conf中的vhosts是控制modsec的首选选项。
即使您使用htaccess缓解编译modsec,也可以使用较少的指令。例如,SecRuleEngine
不能再在那里使用了。如果允许,这是默认情况下可在htaccess中使用的列表(请记住,主机可能会使用AllowOverride
进一步限制此列表):
- SecAction
- SecRule
- SecRuleRemoveByMsg
- SecRuleRemoveByTag
- SecRuleRemoveById
- SecRuleUpdateActionById
- SecRuleUpdateTargetById
- SecRuleUpdateTargetByTag
- SecRuleUpdateTargetByMsg
More info on the official modsec wiki
作为2.x用户的附加说明:IfModule
现在应该查找mod_security2.c
而不是旧的mod_security.c
答案 3 :(得分:2)
如果上述解决方案不起作用,请尝试:
<IfModule mod_security.c>
SecRuleEngine Off
SecFilterInheritance Off
SecFilterEngine Off
SecFilterScanPOST Off
SecRuleRemoveById 300015 3000016 3000017
</IfModule>
答案 4 :(得分:1)
对于某些网络主机,包括 NameCheap ,无法使用.htaccess
禁用ModSecurity。唯一的选择是联系技术支持并要求他们为您更改配置。
答案 5 :(得分:1)
在站点根目录的.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>
&#13;
保持mod_security规则,如SecFilterEngine和彼此分开的部分。它适用于apache服务器
答案 6 :(得分:0)
对于只希望绕过ERROR页面以在共享主机上显示内容的任何人。您可能想尝试在.htaccess文件中使用重定向。如果说是406错误,那么在UnoEuro上,仅停用安全性似乎并不起作用。所以我改用了这个:
ErrorDocument 406 /
然后,您始终可以使用PHP更改错误状态。但是请注意,就我而言,这样做意味着我绕过WAF时为SQL注入打开了一扇门。因此,您需要确保您有自己的安全措施或尽快重新启用安全性。