403发送GET数据时出现禁止错误

时间:2011-02-09 21:58:26

标签: php apache http get http-status-code-403

我的服务器是Linux服务器,经销商是我的。所以我也可以联系WHM小组。

当GET数据如下:

a.php?url=http://www.domain.com

返回403禁止。

但如果数据是这样的:

a.php?url=www.domain.com

它正在发挥作用。

所以, http:// 会产生错误。我该如何解决?

此外,这将返回403 Forbidden:

a.php?url=http%3a%2f%2fwww.domain.com

感谢。

4 个答案:

答案 0 :(得分:4)

这绝对是mod_security CoreRules之一。我在我以前的主持人身上遇到了同样的问题。我不记得规则名称。

您应该调查核心规则版本。 2.1.1将是最新的,并且可能放松了那个特殊的过滤器。如果更新或重新配置没有帮助,那么你必须使用base64_encode()你的url参数(更简单的编码被mod_security嗅探)。

SecFilterDebugLog /var/log/apache2/modsec_log
SecFilterDebugLevel 4

启用mod_security的调试日志记录,以便您可以找出实际导致问题的规则 - 如果要禁用它(建议)。 http://www.modsecurity.org/documentation/modsecurity-apache/1.9.3/modsecurity-manual.html#07-logging

答案 1 :(得分:1)

您需要对查询字符串进行编码以使其有效,请参阅urlencode()

答案 2 :(得分:0)

re:404 - 也许您正在将查询字符串重写到某处的路径,并且您没有启用AllowEncodedSlashes?

答案 3 :(得分:0)

导致此错误的是mod_security的10_asl_rules.conf。

.htaccess正在接收该URL中的内容并发送禁止的标题。