如何用PHP获取referer判断来路防止非法访问

本篇文章给大家介绍如何用PHP获取referer判断来路防止非法访问?有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

如何用PHP获取referer判断来路防止非法访问

下载页面down.php 的php代码 现在我发现,用迅雷,谷歌浏览器直接打开,就能输出下载文件,一点不起防盗链作用。 现在我想,只允许在我自己站上连接过来的可以直接使用,别的的站过来的,和直接输入这个地址的,跳转到copy.htm页上去。

PHP中的 $_SERVER["HTTP_REFERER"] 预定义服务器变量可以判断来路。

$_SESSION['HTTP_REFERER']可以获取当前链接的上一个连接的来源地址,即链接到当前页面的前一页面的 URL 地址。
一般用于判断浏览者是从哪里点击链接跳到本页面的,即所说的来路,还可以通过判断来路来防止盗链。
例如:

<?php
 $url_array = parse_url($_SESSION['HTTP_REFERER']); 
 //如果页面的域名不是服务器域名,就连接到登陆窗口 
 if($_SERVER['HTTP_HOST'] != $url_array["host"]) { 
 header("location: login.php"); 
 exit; 
 } 
 ?>

登录后复制

近期有个项目需要用到防止用户非法访问某json页面,基础解决方法就是判断来路来限制非调用访问:

$_SERVER[‘HTTP_REFERER’]:来路链接,可能带尾巴(如: 
可以通过php内置函数parse_url()来获取到当前网址(www.httple.net),即:
$refererUrl = parse_url($_SERVER[‘HTTP_REFERER’]);
$host = $refererUrl[‘host’];
$host的值即为来路的网址(www.httple.net)。
获取到了来路的网址之后,我们就可以通过这个网址来限制访问该页面的权限了。代码如下:
if(!isset($_SERVER[‘HTTP_REFERER’]) || $referurl[‘host’] !=”www.httple.net”) { header(“location: /”); 
//如果没有来路,或者来路不是本站,跳转到首页。 exit; }

登录后复制

把这行代码放到json数据页面的最上方,就能简单解决该问题。

该处理方法的缺陷:可通过伪造来路获取到该页面的正常数据。

相关代码

获取来路Url 的方法,主要用到服务器变量中HTTP_REFERER函数的使用,代码贴上:

function get_referer(){   
$url = $_SERVER["HTTP_REFERER"]; //获取完整的来路URL   
$str = str_replace("http://","",$url); //去掉http://   
$strdomain = explode("/",$str); // 以“/”分开成数组   
$domain = $strdomain[0]; //取第一个“/”以前的字符  
return $domain;  
}   

//对于百度、谷歌搜索引擎来路判断   
function get_seo(){  
$s = 0;   
if(strstr(get_referer(),'baidu.com')){   
$s = 1;   
}   
else if(strstr(get_referer(),'google.com.hk')){   
$s = 1;   
}   
return $se;    
}

登录后复制

php网站 获取来路Url 的方法,主要用到服务器变量中HTTP_REFERER函数的使用,代码贴上:

在处理一个表单的时候,不得不考虑到用户静态提交的可能,discuz 已经根据formhash来判断

这里我用另一种方式来处理 判断页面来路,当然这种方法也能够被伪造HTTP_REFERER来路

第二部分是解决了 PHP中header('location: 跳转页面后 下一页无法获取HTTP_REFERER,这里只能在页面加个链接 然后用js 模拟点击链接,这样下一页肯定会收到HTTP_REFERER的。Keyword:document.getElementById('gourl').click();

关于如何用PHP获取referer判断来路防止非法访问的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/244191.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
php学习php学习订阅用户
上一篇 2023年3月29日 08:43
下一篇 2023年3月29日 23:09

相关推荐

  • 如何保证PHP商城代码的高质量?

    在互联网时代,电商已成为许多人进行消费的首选方式之一。为了满足日益增长的网购需求,越来越多的企业开始构建自己的电商平台。而PHP作为一种广泛应用于网页开发和互联网应用开发的语言,也成为众多电商平台的首要…

    2023年5月19日
    01
  • 重蔚php学习第三十五天——php表单文件上传

    什么是文件上传 <input type=’file’ /> 文件框 允许用户选择一个本地文件上传至服务器   准备工作 1)表单 2)设置method=”post”,不能使用get get是将数据附近地址栏中,会限制数据大小,只能传输文本…

    2017年10月20日 PHP自学教程
    0475
  • PHP入门指南:协程。

    随着互联网的不断发展和高并发场景的增多,PHP作为一种高性能、易于学习和使用的语言,受到了越来越多的关注和运用。PHP的协程技术是其高并发处理的重要利器之一,本文将为大家介绍PHP协程的基本概念、实现原理和应…

    2023年5月23日
    04
  • PHP入门指南:魔术方法。

    PHP作为一种广泛应用的开发语言,具有着丰富的特性,它的魔术方法就是其中之一,本文将为大家介绍PHP中的魔术方法。一、什么是魔术方法?在PHP中,魔术方法是指一类可以自动调用的方法。这些方法使用特殊的名称,以…

    2023年5月22日
    06
  • PHP中使用Redis实现ID生成器。

    随着互联网的飞速发展,越来越多的网站和应用程序需要支持海量数据的高效存储与访问,同时,随着数据量的不断增加,各种数据处理需求也变得越来越复杂。为了解决这些问题,开发人员通常需要使用强大的数据处理工具…

    2023年5月21日
    01
  • PHP的浮点类型float, double, real

    浮点类型float, double, real有两种写法: $v1 = 1.234;   //带小数点,,就是浮点类型 $v2 = 1.234E3; //含义是:1.234乘以10的3次方,即1234,带E的形式就是浮点数 $v3 = 1234E3;//结果值是1234000,但也是一…

    2018年3月14日 PHP自学教程
    0609
  • PHP图像处理技术的图像处理基本介绍

    所谓的PHP图像处理技术,就是通过php的函数进行绘制图像,然后可以输出到浏览器,也可以保存到本地              该绘图技术,需要开启php的一个扩展:GD2,该扩展提供了很多绘制图像的方法        PHP的图像处理技…

    2018年9月1日
    0255
  • 浅谈PHP中goto语法的用法

    本篇文章给大家介绍一下goto语法在PHP中的使用方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。PHP中goto语法的用法在C++、Java及很多语言中,都存在着一个神奇的语法,就是goto。顾名思义…

    2023年3月29日
    07

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息