php实现图片文件与下载文件防盗链的方法


Posted in PHP onNovember 03, 2014

本文实例讲述了php实现图片文件与下载文件防盗链的方法。分享给大家供大家参考。具体分析如下:

在php中最简单的防盗链办法就是利用php的$_SERVER['HTTP_REFERER']函数来操作了,但是此方法不可靠,我们最终还是需要使用apache,iis来进行操作的,具体的操作方法如下:

php防盗链:

<?php

session_start();

session_register('check');

$_SESSION['check']=true;

?>

检查session变数,判断是否造访首页。并且检查他的来源网页参考(HTTP_REFERER)是否来自本地网站的网页。

方法如下:

<?php

session_start();

$refs = parse_url($_SERVER['HTTP_REFERER']); //分解参考网页资讯

//检查首页session及来源主机是否相同

if(!($_SESSION['check']) || $refs['host'] != $_SERVER['HTTP_HOST'])

exit;

?>

注意:这个只能简单的防盗链了,如果稍懂一点的就可以破解了,

利用服务器来设置php防盗连

apache防盗链:

修改httpd.conf:

SetEnvIfNoCase Referer "^" local_ref=1 

<FilesMatch ".(gif|jpg)"> 

Order Allow,Deny 

Allow from env=local_ref 

</FilesMatch>

如果希望显示一张“禁止盗链”的图片,我们可以用mod_rewrite 来实现。
首先在安装 apache 时要加上 --enable-rewrite 参数加载 mod_rewrite 模组。
假设“禁止盗链”的图片为abc.gif,我们在 httpd.conf 中可以这样配置:

RewriteEngine on 

RewriteCond %{HTTP_REFERER} !^$ 

RewriteCond %{HTTP_REFERER} !^http://(www.)?3water.com /.*$ [NC] 

RewriteRule .(gif|jpg)$ abc.gif [R,L]

DocumentRoot "/usr/local/apache/htdocs" 

#设置存放站点html文件的目录。

<Directory /> 

Options FollowSymLinks 

AllowOverride None 

</Directory>

iis防盗链:

执行文件选择 c:RewriteRewrite.dll 即可以了
httpd.ini是配置文件
图片防盗链代码

[ISAPI_Rewrite] 

# 3600 = 1 hour 

CacheClockRate 3600 

RepeatLimit 32 

# Protect httpd.ini and httpd.parse.errors files 

# from accessing through HTTP 

RewriteCond Host: (.+) 

RewriteCond Referer: (?!http://1.*).* 

RewriteRule .*.(?:gif|jpg|png|bmp) /force.gif [I,O]

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

PHP 相关文章推荐
深思 PHP 数组遍历的差异(array_diff 的实现)
Mar 23 PHP
session在PHP大型web应用中的使用
Jun 25 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
Jan 17 PHP
ThinkPHP中pathinfo的访问模式、路径访问模式及URL重写总结
Aug 23 PHP
php转换颜色为其反色的方法
Apr 27 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
Dec 08 PHP
php获取flash尺寸详细数据的方法
Nov 12 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
php使用array_chunk函数将一个数组分割成多个数组
Dec 05 PHP
PDO::commit讲解
Jan 27 PHP
php多进程并发编程防止出现僵尸进程的方法分析
Feb 28 PHP
php过滤表单提交的html等危险代码
Nov 03 #PHP
PHP屏蔽过滤指定关键字的方法
Nov 03 #PHP
php中count获取多维数组长度的方法
Nov 03 #PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 #PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 #PHP
ThinkPHP模板之变量输出、自定义函数与判断语句用法
Nov 01 #PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 #PHP
You might like
thinkphp循环结构用法实例
2014/11/24 PHP
详谈PHP编码转换问题
2015/07/28 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
JavaScript中去掉数组中的重复值的实现方法
2011/08/03 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
node.js中的emitter.emit方法使用说明
2014/12/10 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
利用JS实现简单的日期选择插件
2017/01/23 Javascript
什么时候不能在 Node.js 中使用 Lock Files
2019/06/24 Javascript
微信小程序 网络通信实现详解
2019/07/23 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
JSONP解决JS跨域问题的实现
2020/05/25 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
[01:25:38]DOTA2-DPC中国联赛 正赛 VG vs LBZS BO3 第一场 1月19日
2021/03/11 DOTA
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
Python unittest模块用法实例分析
2018/05/25 Python
Python Cookie 读取和保存方法
2018/12/28 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
Python 3 判断2个字典相同
2019/08/06 Python
Python中断多重循环的思路总结
2019/10/04 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
python爬虫基础之urllib的使用
2020/12/31 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
美国本地交易和折扣网站:LocalFlavor.com
2017/10/26 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
工程现场管理求职自荐信
2013/10/02 职场文书
房产继承公证书
2014/04/09 职场文书
运动会广播稿200字
2014/10/18 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
优秀教师个人总结
2015/02/11 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python