我正在使用$ _SERVER ['HTTP_REFERER']来生成动态反向链接。
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
这样做是否合理安全?
我正在使用$ _SERVER ['HTTP_REFERER']来生成动态反向链接。
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
这样做是否合理安全?
不是那样的。
它可能不存在。 (这可能是错误的,一些个人防火墙软件包出于隐私原因混淆了引用者,并且一路违反了HTTP规范)
您应该运行任何来自系统外部的任何通过htmlspecialchars
来防范XSS攻击(尽管IIRC,引用者不应该有任何危险的字符,因为他们应该是URL安全的,你应该保持总是谨慎的习惯)。
虽然浏览器带有后退按钮,但不需要尝试复制它们的功能(尤其是当用户点击标记为“后退”的链接时,它不会将它们带回历史中,点击正常的后退按钮将在概念上将他们转发)。
它可能根本没有设置,不仅空白。 – 2011-05-09 09:14:23
好点,编辑得更清楚。 – Quentin 2011-05-09 09:15:38
它可能是安全的,但它是不可靠:由于HTTP spec,HTTP_REFERER
是可选的(某些客户端完全不发送这个头,并从任何HTTP请求一些“安全”软件带了这一点),并且有许多方法可以修改这个头文件。有些浏览器发送推荐页面,有些发送空白字符串,有些不发送,有些可能发送伪造数据,有些可能会发送Matilda阿姨;此外,您无法判断您是否在此标头中获取有效数据。
所以,不,我永远不会相信HTTP_REFERER
包含上一页,也不应该。
+1我已经把最后一个HTML请求页面引用的第一个文件设置为引用器多次,通常是'favicon.ico'或者一个css文件。这发生在Firefox和Chrome中。 – 2011-06-04 05:48:48
不是。 它可能未设置,不需要或甚至不安全。
海外商品会有如下:
安全可靠,抵御XSS攻击,还是安全的,因为“将始终包含有效值”? – 2011-05-09 09:09:52
REFERER并不总是存在,所以你的方法在某些情况下不起作用。 – 2011-05-09 09:13:10