`
天梯梦
  • 浏览: 13634318 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

.htaccess防盗链方法

阅读更多

http标准协议中有专门的字段记录referer

一来可以追溯上一个入站地址是什么

二来对于资源文件,可以跟踪到包含显示他的网页地址是什么。

因此所有防盗链方法都是基于这个Referer字段

网上比较多的2种

一种是使用apache 文件FileMatch限制,在httpd.conf中增加 ( 其实也可以将把下面的语句存成一个.htaccess文件),并放到你的网站 的根目录(就是www/html目录),这样子别人就没有办法盗连你的东东了~~

 

SetEnvIfNoCase Referer "^http://yahoo.com/" local_ref=1

Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
 

这种很方便禁止非允许访问URL引用各种资源文件

请大家注意,把第一句"^http://yahoo.com/"改为你的网站,比如我的网站是: http://www.linji.cn
我应该这么写的  "^http://www.linji.cn/"

第二种是使用rewrite,需要增加apache的mode_rewrite,支持.htaccess文件目录权限限制
在虚拟主机根目录增加.htaccess文件,描述从定向,把非本地地址refer的图片文件都从定向到警告图片或者警告网页上。

首先要确认你的服务器 或空间的服务器解译引擎为Apache2,还有支持.htaccess客户设置文件,如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改 找到:#LoadModule rewrite_module modules/mod_rewrite.so
把前面的 # 给去掉


找到第一个 AllowOverride None 改为 AllowOverride All 重启Apache2服务器

接下就是做一个 .htaccess 文件了,其 .htaccess 文件内容为

 

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://aaoo.net/ .*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://aaoo.net $ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net/ .*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.aaoo.net $ [NC]
RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe )$http://down.yoyo.com.ru/err.html [R,NC,L]

   


其中有色的地方都是要改为你的:
 红色 :就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。
 蓝色 :就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。
 绿色 :如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。

这个方法有个好处是,不同的虚拟主机用不同的描述定义。

接下就是怎么用 .htaccess 文件来实现防盗链了。首先要在空间上建两个目录(当然目录名随你),一个为 web 另一个为 down ,web 是用来放下载页面的(或下载程序),down 当然就是放你提供的东东的啦,把 .htaccess 文件的红色部分改一下,改为http://你的域名/web。蓝色部分改为你要保护文件的扩展名。绿色部分改为http://你的域名/web。改后保存.htaccess 文件把它上传到 down 目录。

 


实例:

 

<IfModule mod_rewrite.c>

# 开启Rewrite模块 
RewriteEngine On

# 定义要保护的文件夹,建议只要保护上传文件夹(/wp-content/uploads/)就可以,主题文件夹之类的就算了
RewriteBase /wp-content/uploads/

#允许空的来源,因为用户可能手动输入图片网址
RewriteCond %{HTTP_REFERER} !^$ [NC]

#允许自己的网站访问啦 
RewriteCond %{HTTP_REFERER} !photozero.net [NC]

#允许几个常用的在线阅读器的访问 
RewriteCond %{HTTP_REFERER} !zhuaxia.com [NC]
RewriteCond %{HTTP_REFERER} !xianguo.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteCond %{HTTP_REFERER} !feedburner.com [NC]
RewriteCond %{HTTP_REFERER} !feedsky.com [NC]

#括号中的是要保护的文件拓展名,这里只保护了 gif,jpg,png,再加上出错时的图片地址 unavailable.png 
RewriteRule .*\.(gif|jpg|png)$ http://example.com/unavailable.png [R,NC,L]

</IfModule>

 

简单的解释一下上述语句:

1、RewriteCond %{HTTP_REFERER} !^$ [NC]

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

2、RewriteCond %{HTTP_REFERER} !webeta.cn [NC]

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

3、RewriteRule .*\.(gif|jpg|png)$ http://www.aaa.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、mov等,不同文件扩展名间使用“|”分割。

这样的话,就可以基本做到简单的防止被盗链情况的发生,而且可以尽最大可能的减少服务器流量的无畏消耗,当然了,如果你不在意这点流量的话,那么可以不用考虑上述设置啦!

 

haccess在线编辑工具
中文化界面(支持十种语言,包括正体中文),功能比较完善:
支持:

  1. 是否显示文章列表(是否显示网站索引目录)
  2. 是否启用密码保护(可对单个目录启用密码保护)
  3. 各种错误页面设置(400     Bad Request401     Auth Req’d402     Payment Req’d403     Forbidden404     Not Found405     Method Not Allowed406     Not Acceptable407     Proxy Auth Repid408     Request Time Out409     Conficting Request410     Gone411     Content Len Req’d412     Precondition Failed413     Entity Too Long414     URI Too Long500     Int, Server Error501     Not Implemented502     Bad Gateway503     Service Unavailable504     Gateway Timeout505     HTTP Ver Not Sup…)
  4. 预设置页面(设置任意页面为主页)
  5. www转向设置(将www.重定向)
  6. 301 302转址(用来重定向)
  7. 存取限制(用来防盗链)
    现在 就去看看:http://www.htaccesseditor.com/sc.shtml

还有第三种:

我在解决blog禁止盗链的时候,发现个问题,也算个好方法。blog把所有资源都自己管理起来,用resserver.php来动态显示,这样统一的入口方便添加权限操作。同时造成上面2种方法无法使用,因为不再是apache直接访问资源文件,而是php 通过文件读取。

因此只能在代码 中做手脚:在读取资源文件输出之前,加如下判断代码

 

$referer = $_SERVER['HTTP_REFERER'];
$selfurl = $_SERVER['HTTP_HOST'];

if(false == strpos($referer,$selfurl)){
    echo '非法盗链!';
    exit(1);
}

 

这里有些偷懒,直接看引用地址中是否包含host地址,不过原理就是这样,判断referer是否是本站地址。我们常常在下载的时候,也碰到盗链网站无法下载,报盗链的问题。要下载这类文件最简单的方法就是改referer比方flashget中,网址下面的"引用"一栏中,直接填写下载地址就可以了。

 

.htaccess是一个完整的文件名,不是***.htaccess或其它格式(当然也有管理员把其设置 成其它名字,但一般都是使用.htaccess)。另外,上传.htaccess文件时,必须使用ASCⅡ模式,并使用chmod命令改变权限 为:644(RW_R__R__) 。每一个放置.htaccess的目录和其子目录都会被.htaccess影响。例如,在/abc/目录下放置了一 个.htaccess文件,那么/abc/和/abc/def/内所有的文件都会被它影响,但/index.html不会被它影响,这一点是很重要的。

 

 

实例功能 :文档访问的密码保护

要利用.htaccess对某个目录下的文档设定访问用户和对应的密码,首先要做的是生成一个.htpasswd的文本文档,例如:

zheng:y4E7Ep8e7EYV

这里密码经过加密,用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下,建议放在www根目录文档之外,这样更为安全些。

有了授权用户文档,可以在.htaccess中加入如下指令了:

AuthUserFile .htpasswd的服务器目录
AuthGroupFile /dev/null (需要授权访问的目录)
AuthName EnterPassword
AuthType Basic (授权类型)
require user wsabstract (允许访问的用户,如果希望表中所有用户都允许,可以使用 require valid-user) 


注,括号部分为学习 时候自己添加的注释

 

分享到:
评论

相关推荐

    使用.htaccess设置图片防盗链的详细方法

    对于虚拟主机用户来说,最方便的莫过于利用.htaccess设置图片...上网搜了一下,.htaccess规则写法很多,但是大部分的区别在于最后一行,下面我们先看看正确的.htaccess防盗链写法,稍后我再详细解释一下最后一行的重点

    apache .htaccess文件详解和配置技巧总结

    主要体现在伪静态的应用、图片防盗链、自定义404错误页面、阻止/允许特定IP/IP段、目录浏览与主页、禁止访问指定文件类型、文件密码保护等。 .htaccess的用途范围主要针对当前目录。 二、启用.htaccess的配置启用....

    Apache服务器中.htaccess文件的实用配置示例集锦

    主要介绍了Apache服务器中.htaccess文件的实用配置示例集锦,囊括了防盗链重定向及强制浏览器下载指定的文件类型等例子,很黄很暴力,需要的朋友可以参考下

    htaccess 防盗链,防止目录浏览等10大技巧

    htaccess 防盗链,防止目录浏览等10大技巧,使用apache服务器的朋友可以参考下

    Apache使用.htaccess 屏蔽恶意 User Agent(防蜘蛛)

    一、登记在册的恶意 User Agent 1、”Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;... .NET CLR 2.0.50727)” ... 代码如下: 116.242.22.10 199.27.128.204 – – [30/Oct/2011:04:02:15 +0800] “GET /chec

    如何设置WordPress图片防盗链方法 推荐

    网上有许多设置图片防盗链方法,这里提供两种,一是利用.htaccess文件进行一些简单的设置便能够轻易防止别人盗取自己网站原创图片的链接;二是使用插件WP Hotlink Protection。 一.修改.htaccess文件 怎么实现?首先...

    htaccess 将所有请求重定向到某个URL地址的规则

    您可能感兴趣的文章:htaccess 防盗链,防止目录浏览等10大技巧.htaccess文件写法之作用范围php静态化页面 htaccess写法详解(htaccess怎么写?)htaccess语法教程Apache中.htaccess文件功能.htaccess文件保护实例讲解...

    WordPress 防盗链设置方法分享

    于是第一时间做了防盗链设置,下面将设置方法随便介绍下,以方便有同样困扰的朋友参考使用。 WordPress 防盗链设置方法: 登陆你主机cPanel之类的管理面板,打开文件管理器(一般需勾选显示隐藏文件),在...

    LiteSpeed服务器用htaccess的防盗链代码

    在网上找了很久也没找到关于 LiteSpeed服务器用htaccess的防盗链写法。咨询了他们一下,说是按Apache的写法可以使用,结果我是研究了很,终于写了个能用的,代码在下面: 引用 代码如下: RewriteEngine on ...

    CodeIgniter辅助小工具Quick CI)Quick+CI

    5.htaccess到项目功能,自动复制Template目录中的.htaccess到你项目目录,可以去掉index.php,还有图片防盗链 功能,模板可自行修改.需要服务器支持rewrite. 6.支持窗口粘边隐藏(上,左,右),不会影响桌面视线,使用查看...

    easypanel虚拟主机控制面板 v1.3.2

    easypanel 是一款集开通虚拟主机、ftp、空间、mysql数据库等功能为一体的虚拟主机控制面板。具备安全、稳定、操作简便等特点。...注意:本虚拟主机控制面板集成了kangle web服务器(如系统已安装... 支持防盗链功能

    Nginx防盗链根据UA屏蔽恶意User Agent请求(防蜘蛛)

    以前介绍过 Apache 使用 .htaccess 屏蔽恶意 User Agent,今天来介绍 Nginx 屏蔽恶意 User Agent请求的方法。 先上规则&注释 #禁用未初始化变量警告 uninitialized_variable_warn off; #匹配各种 bad user agent,...

    Apache中利用mod_rewrite实现防盗链

    前提Apache中的mod_rewrite模块为激活状态,既然要消灭掉mp3文件的盗链就顺便也把图片盗链的设置给做了,下面是我在网站根目录的.htaccess文件中的配置,供同病相怜之人参考:。 view plaincopy to clipboard...

    Apache 防盗链的技术小结

    一. 遭遇图片盗链 个人网站使用的是国外付费空间,有流量限制。今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额。——超出流量,就要向万恶的美帝资本家交银子,吓我一跳,平常网站的流量...

    淘宝画报(自动更新免维护).rar

    淘宝画报--做淘宝客首选 直接上传到空间即可使用 配置Config.Asp中的阿里妈妈PID,站点名称等其它相关信息。 ...友情链接index.asp及tao.asp...如果图片打不开,是因为淘宝有防盗链。目录下有img.asp文件可以伪造。

    使用referer指令配置Nginx服务器来防止图片盗链

    首先,我们找到需要防盗链的域名的conf文件,路径:/usr/local/nginx/conf/vhost/,比如guance.com.conf。先备份下原文件,然后找到下面的部分: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } 将...

    Apache服务器下防止图片盗链的办法

    先解释一下图片防盗链和转向:  图片防盗链有什么用?  防止其它网站盗用你的图片,浪费你宝贵的流量。  图片转向有什么用?  如果你的网站以图片为主,哪天发现月底没到流量就快用光了,那就可以利用图片转向,在...

Global site tag (gtag.js) - Google Analytics