是$ _SERVER ['HTTP_REFERER']安全吗?

时间:2011-05-09 09:07:37

标签: php security

我正在使用$ _SERVER ['HTTP_REFERER']来生成动态反向链接。

<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>

这样做是否合理安全?

3 个答案:

答案 0 :(得分:14)

不喜欢那样。

它可能不存在。 (这可能是错误的,一些个人防火墙软件包因隐私原因而混淆了引用者,一路上违反了HTTP规范)

您应该通过htmlspecialchars运行来自系统外部的任何内容来防范XSS攻击(尽管IIRC,引用者不应该有任何危险的字符,因为它们应该是URL安全的,你应该保持习惯总是谨慎的。)

浏览器带有后退按钮,没有必要尝试复制他们的功能(特别是当用户点击标有“后退”的链接时,它不会将他们带回历史记录中,所以点击正常的后退按钮在概念上会将它们向前转。)

答案 1 :(得分:6)

它可能是安全的,但不可靠:由于HTTP specHTTP_REFERER是可选的(某些客户端根本不发送此标头,并且一些“安全”软件会从任何HTTP请求中删除它,并且有许多方法可以修改此标头。有些浏览器发送引用页面,有些发送空字符串,有些根本不发送,有些可能发送伪造数据,有些可能发送Matilda姨妈;而且,您无法判断是否在此标头中获得了有效数据。

所以,不,我绝不相信HTTP_REFERER包含上一页,你也不应该。

答案 2 :(得分:2)

不是。 它可能没有设置,不需要甚至不安全。

Concider以下内容:

  1. 您的网址和点击中的用户类型。没有推荐人。您的后退按钮不仅不起作用,您还会收到通知错误。
  2. 访问者来自您的产品页面上的外部来源(比如谷歌)。你想把你的访客发回谷歌吗?我不这么认为。
  3. 标题可以修改,我可以进行双重检查,也可以不使用它。