如何在.htaccess文件中禁用mod_security?

Gau*_*wal 34 php apache .htaccess

如何在Apache服务器上mod_security使用.htaccess文件禁用?

我在我的个人域名上使用WordPress并发布一个内容有一些代码块的帖子,根据我的托管服务提供商说mod_security出现错误,我的IP已进入防火墙因为mod_security.

所以我想mod_security通过使用.htaccess文件禁用.

Xyo*_*yon 45

可以这样做,但很可能是mod_security因为某个原因而实现了您的主机.请确保他们批准您为自己的网站禁用它.

那就是说,应该这样做;

<IfModule mod_security.c>
  SecFilterEngine Off
  SecFilterScanPOST Off
</IfModule>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,编译mod_security以防止.htaccess文件关闭此项.并且主机可以通过AllowOverride设置限制.htaccess授权. (9认同)

man*_*-84 7

当上述解决方案不起作用时,请尝试以下操作:

\n\n
<IfModule mod_security.c>\n  SecRuleEngine Off\n  SecFilterInheritance Off\n  SecFilterEngine Off\n  SecFilterScanPOST Off\n  SecRuleRemoveById 300015 3000016 3000017\n</IfModule>\n
Run Code Online (Sandbox Code Playgroud)\n

  • 为什么你的答案比其他答案更好?我只能看到“SecRuleEngine Off”和“SecFilterInheritance Off”中的值,但您没有提供“SecRuleRemoveById”如何工作的解释?我理解这个概念:可以通过该指令有选择地关闭诸如您列出的数字之类的个人规则。但是为什么你在帖子中专门使用“300015”、“3000016”和“3000017”? (4认同)
  • 是的,这些数字代表什么? (3认同)
  • 仍然好奇这些数字意味着什么......? (2认同)

Sim*_*ast 7

某些服务器和Web主机上,可以通过.htaccess但仅完全禁用ModSecurity - 您无法禁用单个规则.

不是为整个网站禁用它,而是最好将其限制为特定的URL.您可以在<If>下面的语句中通过正则表达式指定要匹配的URL ...

### 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>
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是最好的解决方案。我在使用GravityForms时遇到问题,并为URL添加了`wp-admin / admin.php?page = gf_edit_forms`。 (2认同)

dha*_*pin 5

只是为了更新有关mod_security 2.7.0+的问题,他们关闭了通过htaccess缓解modsec的功能,除非您使用该--enable-htaccess-config标志进行编译。大多数主机不使用此编译器选项,因为它允许过于宽松的安全性。相反,httpd.conf中的虚拟主机是控制modsec的首选方法。

即使您确实使用htaccess缓解措施来编译modsec,也可以使用较少的指令。SecRuleEngine例如不能再在那里使用。如果允许,以下是默认情况下可以在htaccess中使用的列表(请注意,主机可能会进一步限制此列表的使用AllowOverride):

    - SecAction
    - SecRule

    - SecRuleRemoveByMsg
    - SecRuleRemoveByTag
    - SecRuleRemoveById

    - SecRuleUpdateActionById
    - SecRuleUpdateTargetById
    - SecRuleUpdateTargetByTag
    - SecRuleUpdateTargetByMsg
Run Code Online (Sandbox Code Playgroud)

官方Modsec Wiki上的更多信息

作为对2.x用户的补充说明:IfModule现在应该寻找,mod_security2.c而不是较旧的mod_security.c


Ale*_*lex 5

对于包括NameCheap在内的某些网络主机,无法使用 禁用 ModSecurity .htaccess。唯一的选择是联系技术支持并要求他们为您更改配置。

  • Simon East,不幸的是,我的答案是“namecheap”托管的唯一选择。不是评论。您别无选择,只能请求技术支持为您启用此选项。这是事实,不是意见,不是评论。我用便宜的名字。另请注意,我目前的声誉还没有达到 50 或更高,因此无法将我的答案添加为评论。 (3认同)
  • 我所说的“这个”是指所有的答案,所有的代码,所有以任何方式进行的尝试,所有这些......都不会起作用。直到联系支持人员并且 OP 请求(并接收)启用对任何类型的 mod_security 功能的访问权限之后。OP 询问如何做一些如果托管在 namecheap 上则无法完成的事情。因此,我的答案是一个有效的答案,通知OP和其他任何在谷歌上搜索此问题的人,namecheap托管本身将要求他们请求许可才能执行此操作。我希望能够帮助人们节省时间,避免因为代码被阻止而无法正常工作而产生的挫败感。 (2认同)