0

据说不信任 $_SERVER["HTTP_REFERER"] 因为它可以...

  1. 被欺骗
  2. 不是浏览器设置的

http://php.net/manual/en/reserved.variables.server.php

$_SERVER["HTTP_REFERER"]

接受它可以被欺骗的事实,我现在的问题是......哪些浏览器不设置变量并且做的那些,总是一致地设置它,在图像的 HTTP 请求上。

在包括 IE6 及更高版本在内的所有主要浏览器中进行了一些测试后,我还没有找到一个没有设置 $_SERVER["HTTP_REFERER"] 或设置不正确的浏览器。

我们可以说所有浏览器都确实设置了变量,还是大多数浏览器都设置了变量?是否有失败的浏览器列表?

4

2 回答 2

1

我不确定您甚至可以提供在这方面保持一致的浏览器/UA 列表。

考虑:

  1. 机器人和蜘蛛。
  2. Javascript 可用于更改引用者。
  3. 直接访问。
  4. 与 #1 相关,还有许多其他自动化 HTTP 客户端。
  5. 大多数浏览器“隐私”扩展、referer 切换扩展、隐身/隐私浏览模式等。
于 2014-10-23T16:49:47.867 回答
0

来自 Web 应用程序黑客手册:

根据 w3.org 标准,Referer 标头是严格可选的。因此,尽管大多数浏览器都实现了它,但使用它来控制应用程序功能应该被视为“黑客”。</p>

因为黑客可以使用适当的工具拦截 HTTP 请求,并且可以在发送 HTTP 请求之前对其进行修改,所以不应使用它来控制任何应用程序功能。

于 2014-10-23T17:31:35.620 回答