使用Apache的htaccess防止图片被盗链的解决方法


Posted in PHP onApril 27, 2013

方法一:
所需要的命令如下:

RewriteEngine on   RewriteCond %{ HTTP_REFERER } !^$  
 RewriteCond %{ HTTP_REFERER } !^http://(www.)?simue.com /.*$ [NC]  
 RewriteRule .(gif &line;jpg)$ - [F]

如果觉得让别人的页面开个天窗不好看,那可以用一张图片来代替:

查看代码

 RewriteEngine on   RewriteCond %{ HTTP_REFERER } !^$  
 RewriteCond %{ HTTP_REFERER } !^http://(www.)?simue.com/.*$ [NC]  
 RewriteRule .(gif &line;jpg)$ http://www.simue.com /替代图片文件名 [R,L] 
需要注意的是,如果通过FTP方式将创建好的.htaccess上传到服务器上,传输模式应为ASCII而非Binary。上传到服务器后,应将其属性通过 CHMOD修改为644 或“RW-R?R?”,这样,可以保证服务器能够使用同时无法通过浏览器修改,当然,.htaccess的可读属性也存在一定的风险:攻击者可通过它找出 您要保护的对象或认证文件位置——解决办法是将认证文件.htpasswd放到网站根目录之外,这样,便无法通过网络找到它了。

方法二:
查看代码01 RewriteEngine on   RewriteCond %{HTTP_REFERER} !^$ [NC]  
 RewriteCond %{HTTP_REFERER} !simue.com [NC]  
 RewriteCond %{HTTP_REFERER} !baidu.com [NC]  
 RewriteCond %{HTTP_REFERER} !google.com [NC]  
 RewriteRule .*\.(gif|jpg)$ http://www.simue.com /no.png [R,NC,L]

简单的解释一下上述语句:
1、RewriteCond %{HTTP_REFERER} !^$ [NC]

允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。一般而言,这是可选的,不过,建议这么设置,如果强迫必须具有“HTTP_REFERER”才能访问,可能会带来某些问题,比如说在用户通过代理服务器访问时。

2、RewriteCond %{HTTP_REFERER} !simue.com [NC]

设置允许访问的HTTP来源,包括我们的网站 自身、Google、Baidu等。

3、RewriteRule .*\.(gif|jpg|png)$ http://www.simue.com/no.png [R,NC,L]

定义被盗链时替代的图片,让所有盗链 jpg、gif、png 等文件的网页,显示根目录下的 no.png 文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:

RewriteRule .*\.(gif|jpg|png)$ - [F]

4、说明一下其中的R、NC 和 L

R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响

5、防止盗链的文件类型

上例中是 gif、jpg、png,而根据需要,可更改或添加其他文件类型,如rar、swf等,不同文件扩展名间使用“|”分割。

PHP 相关文章推荐
PHP 加密与解密的斗争
Apr 17 PHP
Views rows style模板重写代码
May 16 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
php使用sql server验证连接数据库的方法
Dec 25 PHP
部署PHP时的4个配置修改说明
Oct 19 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
Feb 07 PHP
PHP扩展类型及安装方式解析
Apr 27 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 PHP
php 模拟get_headers函数的代码示例
Apr 27 #PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 #PHP
php笔记之:php函数range() round()和list()的使用说明
Apr 26 #PHP
php笔记之:php数组相关函数的使用
Apr 26 #PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 #PHP
php笔记之:文章中图片处理的使用
Apr 26 #PHP
php笔记之:初探PHPcms模块开发介绍
Apr 26 #PHP
You might like
ThinkPHP控制器详解
2015/07/27 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
关于laravel 日志写入失败问题汇总
2019/10/17 PHP
JavaScript高级程序设计 阅读笔记(七) ECMAScript中的语句
2012/02/27 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
JavaScript实现的SHA-1加密算法完整实例
2016/02/02 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
Vue上传组件vue Simple Uploader的用法示例
2017/08/25 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
python二叉树遍历的实现方法
2013/11/21 Python
Python装饰器decorator用法实例
2014/11/10 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
python3设计模式之简单工厂模式
2017/10/17 Python
django中ORM模型常用的字段的使用方法
2019/03/05 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
Python排序函数的使用方法详解
2020/12/11 Python
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
html5自动播放mov格式视频的实例代码
2020/01/14 HTML / CSS
小学端午节活动方案
2014/03/13 职场文书
白酒营销策划方案
2014/08/17 职场文书
2015年除四害工作总结
2015/07/23 职场文书
公司人力资源管理制度
2015/08/05 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
入党申请书怎么写?
2019/06/21 职场文书
Selenium浏览器自动化如何上传文件
2022/04/06 Python
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python
Golang 对es的操作实例
2022/04/20 Golang
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android