2011-05-09 83 views
14

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

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

这样做是否合理安全?

+3

安全可靠,抵御XSS攻击,还是安全的,因为“将始终包含有效值”? – 2011-05-09 09:09:52

+0

REFERER并不总是存在,所以你的方法在某些情况下不起作用。 – 2011-05-09 09:13:10

回答

14

不是那样的。

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

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

虽然浏览器带有后退按钮,但不需要尝试复制它们的功能(尤其是当用户点击标记为“后退”的链接时,它不会将它们带回历史中,点击正常的后退按钮将在概念上将他们转发)。

+1

它可能根本没有设置,不仅空白。 – 2011-05-09 09:14:23

+0

好点,编辑得更清楚。 – Quentin 2011-05-09 09:15:38

5

它可能是安全的,但它是不可靠:由于HTTP specHTTP_REFERER是可选的(某些客户端完全不发送这个头,并从任何HTTP请求一些“安全”软件带了这一点),并且有许多方法可以修改这个头文件。有些浏览器发送推荐页面,有些发送空白字符串,有些不发送,有些可能发送伪造数据,有些可能会发送Matilda阿姨;此外,您无法判断您是否在此标头中获取有效数据。

所以,不,我永远不会相信HTTP_REFERER包含上一页,也不应该。

+1

+1我已经把最后一个HTML请求页面引用的第一个文件设置为引用器多次,通常是'favicon.ico'或者一个css文件。这发生在Firefox和Chrome中。 – 2011-06-04 05:48:48

2

不是。 它可能未设置,不需要或甚至不安全。

海外商品会有如下:

  1. 在您的网址,点击用户类型去。不会有推荐人。您的后退按钮不仅无法正常工作,还会收到通知错误。
  2. 访问者来自您的产品页面上的外部来源(让我们说谷歌)。你想发送你的访客回到谷歌?我不这么认为。
  3. 标题可以修改,我会去检查它,或根本不使用它。
相关问题