Paw*_*wel 5 php apache ajax .htaccess mod-security
我已经创建了一个Wordpress插件,它变得很受欢迎,但是我收到很多抱怨它没有用.在登录到许多用户的WP网站之后(在询问管理员密码之后),我注意到我无法轻易解决的最后一个问题是mod_security和mod_security2阻止了一些AJAX请求或.htaccess导致某些配置出现500错误.
首先,为什么这段代码会导致某些服务器返回500错误
<IfModule mod_security2.c>
SecRuleRemoveById 300015
SecRuleRemoveById 300016
SecRuleRemoveById 300017
SecRuleRemoveById 950907
SecRuleRemoveById 950005
SecRuleRemoveById 950006
SecRuleRemoveById 960008
SecRuleRemoveById 960011
SecRuleRemoveById 960904
SecRuleRemoveById phpids-17
SecRuleRemoveById phpids-20
SecRuleRemoveById phpids-21
SecRuleRemoveById phpids-30
SecRuleRemoveById phpids-61
Run Code Online (Sandbox Code Playgroud)
在其他服务器上通过id删除规则这种方式导致500错误:
<IfModule mod_security.c>
SecRuleRemoveById 300015
...
SecRuleRemoveById phpids-61
</IfModule>
Run Code Online (Sandbox Code Playgroud)
所以现在唯一不会导致任何服务器崩溃的工作是
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
Run Code Online (Sandbox Code Playgroud)
但对于mod_security2的服务器来说还不够!
如何编写跨服务器.htaccess文件,以及我应该添加哪些IF条件以禁用mod_security和mod_security2在任何适用的位置,并且不会在其他配置上导致500错误?
编辑:不仅在Apache中.使用.htaccess的地方.
ModSecurity社区经理Ryan C. Barnett声称:
.htaccess文件的支持在2.x中停止,因为它引发了太多的安全问题.
来源:http://article.gmane.org/gmane.comp.apache.mod-security.user/3065
在htaccess上启用的唯一可能配置如下(自2.7.3起),但您需要./configure --enable-htaccess-config:
SecRule
SecRuleRemoveByMsg
SecRuleRemoveById
SecRuleUpdateActionById
https://github.com/SpiderLabs/ModSecurity/blob/876d4f5f9558595c00f40af25ea6216386f15cd7/CHANGES#L69
显示一条消息告诉联系服务器管理员将是最后要做的事情。首先,我将尝试以下解决方案之一来自动创建配置:
在子文件夹中创建 2-3 个沙盒 .htaccess 配置
或者