PHP referer 相关说明

2019-02-16 23:22:08

PHP中使用$_SERVER['HTTP_REFERER']可以得到当前页面的前一页面的地址

例如:

页面index.html中有个<a href="test.php">链接</a>,当用户点击时会跳转至test.php,此时test.php中可以得到$_SERVER['HTTP_REFERER']的值为 : http://域名/index.html

PHP $_SERVER['HTTP_REFERER'] 无效

$_SERVER['HTTP_REFERER']并不是所有浏览器都会设置这个变量,有的还可以手工修改, 因此$_SERVER['HTTP_REFERER']仅做参考

通常以下方式$_SERVER['HTTP_REFERER']会无效

  • 直接输入网址访问该网页
  • JavaScript打开的网址
  • JavaScript重定向(window.location)网址
  • 使用 meta refresh 重定向的网址
  • 使用 PHP header 重定向的网址
  • Flash中的链接。
  • 浏览器未加设置或被用户修改

一般来说只有通过<a>标签的超链接以及 POST 或 GET 表单访问的页面$_SERVER['HTTP_REFERER']才有效

因此在表单数据处理页面一定程度上可以通过校验$_SERVER['HTTP_REFERER']来防止表单数据的恶意提交,但该方法并不能保证表单数据的绝对正确,即对表单数据的真实性检测并不能完全依赖于$_SERVER['HTTP_REFERER']

PHP 手册描述$_SERVER['HTTP_REFERER']

引导用户代理到当前页的前一页的地址(如果存在)。由 user agent 设置决定。并不是所有的用户代理都会设置该项,有的还提供了修改 HTTP_REFERER 的功能。简言之,该值并不可信。
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »