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

Posted

技术标签:

【中文标题】发送 GET 数据时出现 403 禁止错误【英文标题】:403 Forbidden Error While Sending GET Data 【发布时间】:2011-06-24 11:22:44 【问题描述】:

我的服务器是 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

谢谢。

【问题讨论】:

数据从何而来?你是在浏览器中输入这个吗?您是否有权访问错误日志以查看确切拒绝访问的资源? error_log 上没有任何内容。当我在浏览器中输入或通过表单发送时,不会。 错误日志中显示了什么?如果 mod_security 检测到嵌入在请求 URL 中的 URL(例如,试图阻止潜在的 XSS 攻击),它可能会主动拒绝访问。 error_log 文件(放置到根目录)为空。 【参考方案1】:

这绝对是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

【讨论】:

Eray:如果没有任何答案有帮助,请将您的问题标记为版主注意并将其转移到serverfault.com - 他们应该知道...【参考方案2】:

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

【讨论】:

没关系,同样的错误:http://www.girmiyor.com/c.php?q=http%3a%2f%2fwww.teknoblogo.com @Eray,你在重写网址吗? 奇怪,一定是一些服务器配置问题,因为我可以将该字符串添加到我的 php 页面之一而没有任何问题。【参考方案3】:

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

【讨论】:

【参考方案4】:

是 mod_security 的 10_asl_rules.conf 导致了这个错误。

这是 .htaccess 正在获取该 URL 中的某些内容并发送禁止的标头。

【讨论】:

以上是关于发送 GET 数据时出现 403 禁止错误的主要内容,如果未能解决你的问题,请参考以下文章

如何解决安装IIS时出现HTTP错误403禁止访问?

为 Google 课堂获取课程列表时出现 403 禁止错误

发出 ajax Post 请求时出现 403 禁止错误

运行 apache 时出现禁止的 403 错误

HTTP错误403.14 - 访问网站时出现禁止错误

使用 Go 向 APNS 发出推送请求时出现 403 禁止错误。我是不是正确创建了 JWT?