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 相关文章推荐
phpmyadmin MySQL 加密配置方法
Jul 05 PHP
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
Jun 07 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
php中Ctype函数用法详解
Dec 09 PHP
PHP实现远程下载文件到本地
May 17 PHP
php生成图片验证码的实例讲解
Aug 03 PHP
分享PHP守护进程类
Dec 30 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
Jun 17 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
PHP实现与java 通信的插件使用教程
Aug 11 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php setcookie函数的参数说明及其用法
2014/04/20 PHP
解决nginx不支持thinkphp中pathinfo的问题
2015/07/21 PHP
jQuery 判断元素上是否绑定了事件
2009/10/28 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
Promise扫盲贴
2019/06/24 Javascript
python解析中国天气网的天气数据
2014/03/21 Python
Linux下使用python调用top命令获得CPU利用率
2015/03/10 Python
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
django表单实现下拉框的示例讲解
2018/05/29 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
django 连接数据库出现1045错误的解决方式
2020/05/14 Python
使用pandas实现筛选出指定列值所对应的行
2020/12/13 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
Linux Interview Questions For software testers
2012/06/02 面试题
软件测试笔试题
2012/10/25 面试题
Prototype如何更新局部页面
2013/03/03 面试题
全运会口号
2014/06/20 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
仰望星空观后感
2015/06/10 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书