.htaccess 和 Apache ModSecurity

Posted

技术标签:

【中文标题】.htaccess 和 Apache ModSecurity【英文标题】:.htaccess and Apache ModSecurity 【发布时间】:2016-06-28 08:36:53 【问题描述】:

我有这个 .htaccess

选项 - 索引 重写引擎开启 RewriteBase / # 强制排除尾部斜杠 RewriteCond %REQUEST_FILENAME !-d RewriteCond %REQUEST_URI (.*)/$ 重写规则 ^(.+)/$ $1 [R=307,L] # 限制php文件直接访问 # 这部分产生问题 RewriteCond %THE_REQUEST ^.+?\ [^?]+\.php[?\ ] 重写规则 \.php$ - [F] # 允许直接显示任何存在的文件或目录 RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php?$1 [QSA,L]

但是 apache 给我写了这个:

ModSecurity:警告。需要匹配“在 %tx.allowed_methods 内”与“REQUEST_METHOD”。 [file "/modsecurity/modsecurity_crs_30_http_policy.conf"] [line "31"] [id "960032"] [rev "2"] [msg "Method is not allowed by policy"] [data "GET"] [severity "CRITICAL "] [ver "OWASP_CRS/2.2.9"] [成熟度 "9"] [准确度 "9"] [标签 "OWASP_CRS/POLICY/METHOD_NOT_ALLOWED"] [标签 "WASCTC/WASC-15"] [标签 "OWASP_TOP_10/A6 "] [标签 "OWASP_AppSensor/RE1"] [标签 "PCI/12.1"]

我必须如何编辑我的 htaccess?谢谢大家。

【问题讨论】:

security.stackexchange.com/q/38483 Mod security 和 htaccess 是两种不同的技术。您的规则在 mod_sec 中匹配 OWASP 规则集,而不是在 htaccess 中 谢谢,但我无法编辑主机的 pache 配置。我已将 php 的版本从 5.5 更改为 5.3 【参考方案1】:

正如第一条评论所说,您有一个 ModSecurity 规则阻止您的请求。如果您的托管服务提供商在构建 ModSecurity 时启用了“--enable-htaccess-config”,那么您可以从 htaccess 文件中禁用该特定规则。您可以使用类似于以下内容的内容:

<IfModule mod_security.c> SecRuleRemoveById 960032 </IfModule>

但是,如果您的提供商未启用此功能,并且您无权访问任何 Apache 配置文件(httpd.conf 等)。然后,您将不得不联系您的托管服务提供商来解决问题。对不起

【讨论】:

以上是关于.htaccess 和 Apache ModSecurity的主要内容,如果未能解决你的问题,请参考以下文章

apache的.htaccess文件作用和相关配置

使用 .htaccess 时 Apache 服务器上出现 403 和 500 错误

.htaccess 和 Apache ModSecurity

Apache中.htaccess文件的作用和配置

.htaccess Rewrite apache重写和配置

使用 apache config 和 htaccess 为开发和生产动态设置配置变量