.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的主要内容,如果未能解决你的问题,请参考以下文章
使用 .htaccess 时 Apache 服务器上出现 403 和 500 错误