我已经创建了一个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
在其他服务器上通过id删除规则导致500错误:
<IfModule mod_security.c>
SecRuleRemoveById 300015
...
SecRuleRemoveById phpids-61
</IfModule>
所以现在唯一不会导致任何服务器崩溃的工作是
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
但对于具有mod_security2的服务器来说还不够!
如何编写跨服务器.htaccess文件,我应该添加哪些IF条件,以便在适用的任何地方禁用mod_security和mod_security2,而不会在其他配置上导致500错误?
编辑: 不仅在Apache中。使用.htaccess的地方。
答案 0 :(得分:5)
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
答案 1 :(得分:0)
显示告知联系服务器管理员的消息将是最后一件事。首先,我将尝试使用此解决方案之一进行自动配置创建:
在子文件夹中创建2-3个沙盒.htaccess配置
OR