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中调用JAVA
Oct 09 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
PHP无法访问远程mysql的问题分析及解决
May 16 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
2014年10个最佳的PHP图像操作库
Jul 14 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
May 13 PHP
php使用curl下载指定大小的文件实例代码
Sep 30 PHP
php intval函数用法总结
Apr 14 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
php和nginx交互实例讲解
Sep 24 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
php字符串函数 str类常见用法示例
May 15 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
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
PHP管理依赖(dependency)关系工具 Composer 安装与使用
2014/08/18 PHP
PHP处理会话函数大总结
2015/08/05 PHP
Zend Framework框架路由机制代码分析
2016/03/22 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
JQuery live函数
2010/12/24 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
node.js解决获取图片真实文件类型的问题
2014/12/20 Javascript
对JavaScript中this指针的新理解分享
2015/01/31 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
JavaScript实现常用二级省市级联下拉列表的方法
2015/03/25 Javascript
讲解JavaScript中for...in语句的使用方法
2015/06/03 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
jquery实现跳到底部,回到顶部效果的简单实例(类似锚)
2016/07/10 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
2020/07/17 Javascript
Python 基础教程之str和repr的详解
2017/08/20 Python
详解Django项目中模板标签及模板的继承与引用(网站中快速布置广告)
2019/03/27 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
美国爆米花工厂:The Popcorn Factory
2019/09/14 全球购物
年终总结会议主持词
2014/03/17 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
python处理json数据文件
2022/04/11 Python