php获取referer防非法访问

 更新时间:2021年08月04日 10:35:35   作者:云博客  
这篇文章主要介绍了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']:来路链接,可能带尾巴(如:http://www.httple.net/iwork/20.html),可以通过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函数的使用,代码贴上:

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;
}

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

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

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

到此这篇关于php获取referer防非法访问的文章就介绍到这了,更多相关php放置非法访问内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PHP导航下拉菜单的实现如此简单

    PHP导航下拉菜单的实现如此简单

    PHP导航下拉菜单的实现对于很多朋友来说还是有一定的难度的,下面有个不错的示例,感兴趣的朋友可以参考下,希望对大家有所帮助
    2013-09-09
  • PHP网站开发中常用的8个小技巧

    PHP网站开发中常用的8个小技巧

    这篇文章主要介绍了PHP网站开发中常用的8个小技巧,本文讲解了命名、使用、PHP判断Form表单是否提交、PHP 获取字符串长度、PHP超全局对象等内容,需要的朋友可以参考下
    2015-02-02
  • PHP生成压缩文件实例

    PHP生成压缩文件实例

    这篇文章主要介绍了PHP生成压缩文件实例,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • IIS6.0 开启Gzip方法及PHP Gzip函数分享

    IIS6.0 开启Gzip方法及PHP Gzip函数分享

    因为在做一个项目,项目里面服务器主要提供数据,但是数据多了文件就大了,比较浪费流量和时间,我们便用Gzip来处理。我在本机上是apache,服务器上是IIS6.0,用的是php,那么我就在这里分享一下。
    2014-06-06
  • Yii2中DropDownList简单用法示例

    Yii2中DropDownList简单用法示例

    这篇文章主要介绍了Yii2中DropDownList简单用法,实例分析了DropDownList下拉列表的基本调用方法,需要的朋友可以参考下
    2016-07-07
  • PHP微信公众号自动发送红包API

    PHP微信公众号自动发送红包API

    微信发红包已经成为当今比较流行的祝福形式,大家都学着使用微信发红包,这篇文章主要为大家详细介绍了PHP微信公众号自动发送红包API,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • php注册和登录界面的实现案例(推荐)

    php注册和登录界面的实现案例(推荐)

    下面小编就为大家带来一篇php注册和登录界面的实现案例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • Yii框架中jquery表单验证插件用法示例

    Yii框架中jquery表单验证插件用法示例

    这篇文章主要介绍了Yii框架中jquery表单验证插件用法,结合实例形式分析了Yii框架中使用jquery表单验证插件进行手机、邮箱等输入信息验证的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • PHP魔术方法的使用示例

    PHP魔术方法的使用示例

    这篇文章主要介绍了PHP魔术方法的使用示例,本文分别讲解了__get、__set、__call、__callStatic、__toString、 __invoke等魔术方法的使用,需要的朋友可以参考下
    2015-06-06
  • TP3.2.3框架文件上传操作实例详解

    TP3.2.3框架文件上传操作实例详解

    这篇文章主要介绍了TP3.2.3框架文件上传操作,结合实例形式详细分析了thinkPHP3.2.3框架文件上传相关原理、实现方法与操作注意事项,需要的朋友可以参考下
    2020-01-01

最新评论