PHP实现防盗链的方法分析


Posted in PHP onJuly 25, 2017

本文实例讲述了PHP实现防盗链的方法。分享给大家供大家参考,具体如下:

$_SERVER['HTTP_REFERER']的获取情况

注意 $_SERVER['HTTP_REFERER'] 并不一定总能获取到,只有在以下情况下才能获取到:

一、能够取到HTTP_REFERER的情况为以下几种:

1.直接用<a href>
2.用Submit或<input type=image>提交的表单(POST or GET)
3.使用Jscript提交的表单(POST or GET)

二、不能取到的情况有以下几种:

1.从收藏夹链接
2.单击”主页”或者自定义的地址
3.利用Jscript的location.href or location.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向
7.用XML加载地址

strrpos函数讲解:

strrpos — 计算指定字符串在目标字符串中最后一次出现的位置

说明

int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
返回字符串 $haystack 中 needle 最后一次出现的数字位置。

$haystack 在此字符串中进行查找。
$needle 如果 needle不是一个字符串,它将被转换为整型并被视为字符的顺序值。

返回值

返回 needle 存在的位置。如果没有找到,返回 FALSE。

盗链判断代码:asd.php

<?php
//防盗链技术
//先判断是否获取到 $_SERVER['HTTP_REFERER'] 变量
if(isset($_SERVER['HTTP_REFERER'])){
  //判断$_SERVER['HTTP_REFERER']是不是以http://localhost/开始的
  if(strpos($_SERVER['HTTP_REFERER'],"http://localhost")==0){
    echo '<img src="a.png"/>';
  }
  else{
    header("Location:warning.php");//跳转页面到warning.php
    //echo $_SERVER["HTTP_REFERER"];
  }
}
else {
  header("Location:warning.php");
}
?>

warning.php

<html>
<b>倒链</b>
</html>

防盗链验证代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="http://localhost/wml/asd.php" rel="external nofollow" >验证防盗链</a>
</body>
</html>

上面是理解原理

一般通过配置服务器防盗链,如nginx配置访问

(gif|jpg|jpeg|png|bmp|swf) 等文件的白名单

具体配置可百度搜索

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
ASP和PHP都是可以删除自身的
Apr 09 PHP
说明的比较细的php 正则学习实例
Jul 30 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
10款实用的PHP开源工具
Oct 23 PHP
PHP数据库表操作的封装类及用法实例详解
Jul 12 PHP
php的laravel框架快速集成微信登录的方法
Dec 12 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 #PHP
php 删除指定文件夹的实例讲解
Jul 25 #PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 #PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 #PHP
PHP实现的登录页面信息提示功能示例
Jul 24 #PHP
PHP检查网站是否宕机的方法示例
Jul 24 #PHP
PHP十六进制颜色随机生成器功能示例
Jul 24 #PHP
You might like
法压式咖啡之制作法
2021/03/03 冲泡冲煮
PHP目录函数实现创建、读取目录教程实例
2011/01/13 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
使用Sphinx对索引进行搜索
2013/06/25 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
Laravel框架基于中间件实现禁止未登录用户访问页面功能示例
2019/01/17 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
使用PHP开发留言板功能
2019/11/19 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
2011/08/03 Javascript
javascript中兼容主流浏览器的动态生成iframe方法
2014/05/05 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
vue监听键盘事件的快捷方法【推荐】
2018/07/11 Javascript
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
40行代码把Vue3的响应式集成进React做状态管理
2020/05/20 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
小程序实现密码输入框
2020/11/16 Javascript
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
Python内置类型性能分析过程实例
2020/01/29 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
工作失职检讨书范文
2014/01/16 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
《搭石》教学反思
2014/04/07 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
建议书的格式及范文
2015/09/14 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技