标头中使用的 URL 的卫生:位置?

Sanitation for URL used in Header: Location?

提问人:Pekka 提问时间:2/6/2010 最后编辑:Pekka 更新时间:2/6/2010 访问量:446

问:

在多步骤表单流程中,我收到一个 URL 作为表单字段。

处理后,我的PHP脚本使用重定向到该地址header("Location: ...");

除了可能被滥用为色情网站的重定向服务以在电子邮件中生成看起来无害的链接(开放重定向,可以通过将 URL 与本地域匹配来提供帮助)之外,在此过程中是否有任何黑客/利用危险需要注意?

我想到的一件事是将换行符偷运到 URL 中,这可能会打开向客户端发送任意标头的可能性。

PHP 安全 http 标头

评论

1赞 Eric Butera 2/6/2010
其术语是开放重定向。请参见:owasp.org/index.php/Open_redirect
0赞 Pekka 2/6/2010
感谢@Eric介绍这个术语。
0赞 rook 2/6/2010
不,对不起,我不知道它是什么时候更改的。那是一两年前的事了,如果你没有针对header()攻击进行修补,那么你就会遇到更大的问题,因为从那时起,漏洞就得到了修复。
0赞 Pekka 2/6/2010
@Michael,我只是好奇地参考一下。也许我会查一下,把它放在这里。

答:

3赞 rook 2/6/2010 #1

在旧版本的 PHP 中,您必须担心 CRLF 注入,即 \r\n。这是一个“标头响应拆分漏洞”。如果你去掉这些字符,那么你就不必担心了。在最新版本的 PHP 中,header() 函数是安全的,并且会自动为您处理 \r\n。

评论

0赞 Pekka 2/6/2010
干杯@Michael。你知道这是哪个版本改变的吗?