Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP使用$#u服务器[';HTTP#u REFERER';]创建反向链接_Php - Fatal编程技术网

PHP使用$#u服务器[';HTTP#u REFERER';]创建反向链接

PHP使用$#u服务器[';HTTP#u REFERER';]创建反向链接,php,Php,使用以下内容创建反向链接是否安全: $backLink = htmlentities($_SERVER['HTTP_REFERER']); 或者有更好的解决方案吗?只要你检查它的存在,它是相当安全的。在某些浏览器中,它可以关闭,但我不确定它对浏览器是否是强制性的。但底线是,你不能指望它存在。(并不是说referer头必须存在。) 如果您确实需要反向导航,也许您可以使用会话变量来保存以前访问过的页面(当前页面,但仅在显示反向链接后更新)。鉴于: referer头是可选的 某些安全软件将重写re

使用以下内容创建反向链接是否安全:

$backLink = htmlentities($_SERVER['HTTP_REFERER']);

或者有更好的解决方案吗?

只要你检查它的存在,它是相当安全的。在某些浏览器中,它可以关闭,但我不确定它对浏览器是否是强制性的。但底线是,你不能指望它存在。(并不是说referer头必须存在。)

如果您确实需要反向导航,也许您可以使用会话变量来保存以前访问过的页面(当前页面,但仅在显示反向链接后更新)。

鉴于:

  • referer头是可选的
  • 某些安全软件将重写referer标题(例如,至XXXX:XXXXXXXX或产品广告)
  • 链接到referer最多只能复制back按钮的内置功能
  • 用户通常希望标记为“back”的链接按顺序将他们带到上一页,而不是他们所在的上一页

不,这不安全。危险不大,但好处很小。

在某些情况下,它会起作用。但是,您应该知道HTTP referer头是不保证的。用户代理(浏览器、搜索引擎等)无法发送任何内容,无论是否正确。此外,如果用户直接浏览到该页面,则不会显示referer标头。一些互联网安全软件产品甚至出于“安全”的原因删除了HTTP referer

如果您希望使用此解决方案,请确保设置了回退功能,例如不显示回退链接,或链接到默认起始页或其他内容(这将取决于使用此功能的情况)


另一种解决方案可能是使用javascript导航到“history.back”。这将使用浏览器的“返回/历史记录”功能返回到用户所在的上一页。

更简单的方法可能是执行以下操作:

<a href="javascript:history.back()">Go back</a>

这并不依赖于浏览器填充Referer标题,而是与按浏览器的“后退”按钮完全相同


这可能会被认为是更好的,因为它实际上会返回到浏览器历史记录中,而不是向前将上一页添加到浏览器历史记录中。它的作用就像你期望的后退按钮一样。

我认为Facebook使用了类似的技术来重定向用户


它们使用名为“from”的GET变量。

您必须小心使用htmlentities,因为它会破坏非ASCII编码。比如说,

echo(htmlentities("Привет, друг!")); //Contains russian letters
显示为

Ïðåò, äðóã!

这当然是错误的

每个浏览器都会按自己的意愿在URL中发送非ASCI字符。Unicode格式的Mozilla,即系统当前的字符集(俄罗斯的Windows-1251)


因此,用htmlspecialchars替换htmlentities可能很有用。

不过请注意,您首先应该使用javascript添加此链接,否则该链接只会让Joe Surfer感到沮丧。这是真的。建议进行适当的降级。