我正在使用$ _SERVER ['HTTP_REFERER']来生成动态反向链接。
<a href="<?php echo $_SERVER['HTTP_REFERER'] ?>">Return to..blah</a>
这样做是否合理安全?
答案 0 :(得分:14)
不喜欢那样。
它可能不存在。 (这可能是错误的,一些个人防火墙软件包因隐私原因而混淆了引用者,一路上违反了HTTP规范)
您应该通过htmlspecialchars
运行来自系统外部的任何内容来防范XSS攻击(尽管IIRC,引用者不应该有任何危险的字符,因为它们应该是URL安全的,你应该保持习惯总是谨慎的。)
浏览器带有后退按钮,没有必要尝试复制他们的功能(特别是当用户点击标有“后退”的链接时,它不会将他们带回历史记录中,所以点击正常的后退按钮在概念上会将它们向前转。)
答案 1 :(得分:6)
它可能是安全的,但不可靠:由于HTTP spec,HTTP_REFERER
是可选的(某些客户端根本不发送此标头,并且一些“安全”软件会从任何HTTP请求中删除它,并且有许多方法可以修改此标头。有些浏览器发送引用页面,有些发送空字符串,有些根本不发送,有些可能发送伪造数据,有些可能发送Matilda姨妈;而且,您无法判断是否在此标头中获得了有效数据。
所以,不,我绝不相信HTTP_REFERER
包含上一页,你也不应该。
答案 2 :(得分:2)
不是。 它可能没有设置,不需要甚至不安全。
Concider以下内容: