Dav*_*man 2 apache-http-server http-status-code-404 pathinfo
(哇,这个标题太烂了......如果你有更好的建议,请随时在评论中提出建议或编辑它。)
我有一个带有 CGI 程序的服务器,它接收一个 URL 作为路径信息,检查用户的 IP 地址,并将它们重定向到直接转到该 URL(如果它们在我们组织内部)或通过代理将它们发送到 URL (如果它们是外部的)。CGI 本身运行良好,但有些 URL apache 返回 404 Not Found 错误而不是调用脚本。这似乎与包含 URI 编码路径的目标 URL 相关。例如,
http://myserver.org/cgi-bin/ipchk/http://other.server.org/10.1007%2F3-540-28519-9_8
返回 404,而
http://myserver.org/cgi-bin/ipchk/http://other.server.org/10.1007/3-540-28519-9_8
(相同的 URL,但%2F
解码为 a /
)正常工作。
我已经验证(通过error_log
在启动时输出),当返回 404 时,ipchk
脚本根本没有启动。这些错误肯定来自 apache 本身,而不是由脚本将用户重定向到不存在的 URL 引起的。
为什么 pathinfo-URL 的编码会影响 apache 定位 ipchk 脚本的能力,我需要做些什么才能让它将所有 /cgi-bin/ipchk/
URI传递给ipchk
不管接下来会发生什么?
作为尝试保护用户免受在检查传入路径之前未正确解码数据的 CGI 代码的影响的一部分,apache 拒绝(如 404 未找到)包含 URI 编码形式的正斜杠 ( %2F
) 或反斜杠 ( %5C
) 的URL ,如解释在这篇文章中。
要绕过此检查,您必须使用 apache 2.0.46 或更高版本并AllowEncodedSlashes
在 apache 配置中启用该指令。(该指令也无法从正常工作.htaccess
;它仅允许在服务器或虚拟主机环境。)
归档时间: |
|
查看次数: |
2504 次 |
最近记录: |