`
xiaoqiang6775
  • 浏览: 32262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

防盗链的原理与实现

阅读更多


    要实现防盗链,我们就必须先理解盗链的实现原理,提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。

如果想对自己的网站进行防盗链保护,则需要针对不同的情况进行区别对待。如果网站服务器用的是apache,那么使用apache自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查refer,如果refer的信息来自其他网站则重定向到指定图片或网页上。

:简言之,HTTP Refererheader的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。   Referer其实应该是英文单词Referrer,不过拼错的人太多了,所以编写标准的人也就将错就错了。

 Request.ServerVariables("HTTP_REFERER")的用法(防外连接)   下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")   1) 直接用<a href="">  

2) Submit<input type="image">提交的表单(POSTGET) 

3) 使用JAvaScript提交的表单(POSTGET)  

下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况: 

1) 从收藏夹链接 

2) 单击主页或自定义的地址  

3) 在浏览器中直接输地址  

4) 使用JavaScriptLocation.href或者是Location.replace()  

5) <%Response.Redirect%> 

6) <%Response.AddHeader%>或者是<mete http-equiv="refresh">转向  

7) XML加载地址

8)从迅雷或者其他软件下载时

防外链代码例子(C#):   if (Request.ServerVariables["HTTP_REFERER"] == null || !Request.ServerVariables["HTTP_REFERER"].ToString().Contains(Request.ServerVariables["HTTP_HOST"].ToString()))   {   Server.Transfer("Error.aspx");   }   =========================================================== 

       下列情况是从浏览器的地址栏正常取得

Request.ServerVariables("HTTP_REFERER"):  

1.直接用<a href>  

2.Submit<input type=image>提交的表单(POST or GET)  

3.使用Jscript提交的表单(POST or GET)  

下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:   1.从收藏夹链接   2.单击'主页'或者自定义的地址   3.利用Jscriptlocation.href or location.replace()   4.在浏览器直接输入地址   5.<%Response.Redirect%>   6.<%Response.AddHeader%><meta http-equiv=refresh>转向   7.XML加载地址   显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:   ref.asp   <%   response.write "You came from: " & request.servervariables("http_referer")   %>   ref.htm   <%   Response.AddHeader "Refresh", "10;URL=ref.asp"   %>   <meta http-equiv='refresh' content='10;URL=ref.asp'>   <form method=GET action=ref.asp name=getform>   <input type=submit value=' Go there (GET) >> '>   <input type=image style='cursor:hand'>   </form><p>   看看上面的代码会得到什么的结果.   <form method=POST action=ref.asp name=postform>   <input type=submit value=' Go there (POST) >> '>   <input type=image style='cursor:hand'>   </form><p>   <a href='ref.asp'>直接链接</a><p>   <a href='#' onclick='window.location.href="ref.asp";return false;'>Javascript location</a><p>   <a href='#'onclick='window.location.replace("ref.asp");return false;'>Javascript replace</a><p>   <a href='#' onclick='document.getform.submit();return false;'>javascript GET</a><p>   <a href='#' onclick='document.postform.submit();return false;'>javascript POST</a>   Request.ServerVariables(HTTP_REFERER)的工作方式   JSP中获取REFERER的方式是:request.getHeader("REFERER");    PHP中获取REFERER的方式是:$_SERVER['HTTP_REFERER'];

总结:为了防止盗链的发生不应该直接给出下载地址,而应当每次下载前都必须验证REFERER的来源和用户的权限需要动态计算出地址,然后给出真正的下载地址。

 

分享到:
评论

相关推荐

    apach防盗链配置

    一、理解防盗链原理 防盗链(Hotlinking)是指其他网站通过直接引用(即HTML中的`&lt;img&gt;`、`&lt;script&gt;`等标签)你网站上的资源,使得用户在访问其他网站时,实际上是从你的服务器上加载这些资源。这不仅会增加你的...

    如何快速解决图片防盗链问题

    如果该字段不存在或不符合预设规则,则拒绝提供资源,从而实现防盗链的目的。这种方式有效地减少了带宽消耗和服务器压力,保护了网站资源不受未经授权的访问。 #### 遇到的问题 在实际操作中,当我们需要引用其他...

    采集破解防盗链图片显示的方法

    首先,我们要理解图片防盗链的基本原理。防盗链通常通过检查HTTP请求头中的`Referer`字段来实现,当用户从其他网站直接引用图片时,服务器会检测到`Referer`不是其网站,从而拒绝提供图片资源。PHP可以通过分析`$_...

    IIS防盗链,示例文件

    1. **IIS防盗链原理** 防盗链的基本原理是通过检查HTTP请求头中的`Referer`字段。当用户访问一个网页并点击链接时,浏览器会将来源页面的URL作为`Referer`发送到目标服务器。如果`Referer`不是来自你的网站,IIS会...

    流媒体服务器防盗链插件

    下面我们将深入探讨防盗链插件的工作原理、实现方式以及其在不同编程语言中的应用。 1. 工作原理: 流媒体服务器防盗链插件主要通过验证请求来源的合法性来实现其功能。当用户试图访问一个流媒体文件时,服务器会...

    asp.net中利用ashx实现图片防盗链

    ### 实现图片防盗链的原理 图片防盗链的核心在于验证请求来源是否合法。当一个网页请求加载图片时,会附带一个 Referer(引用者)头部信息,这个信息包含了请求该图片的页面地址。通过检查这个 Referer 信息,我们...

    文件防盗链的实现(射雕英雄java传系列)

    防盗链的基本原理通常包括以下几个步骤: 1. **检查HTTP请求头**:服务器在接收到文件请求时,会检查请求头中的`Referer`字段。这个字段表示用户是从哪个页面点击链接过来的。如果`Referer`不是预期的域名,那么就...

    无视图片防盗链php单文件.zip

    一、图片防盗链原理: 图片防盗链通常基于HTTP头部的Referer字段来实现。当浏览器请求一个网页时,会将用户点击链接的来源页面URL作为Referer字段发送到目标服务器。如果目标服务器发现这个Referer不是来自自己的...

    ASP.NET_防盗链技术

    一、防盗链原理 防盗链的基本原理是通过检查HTTP请求头中的`Referer`字段来判断请求来源。当用户通过一个链接访问网站资源时,浏览器会自动将这个链接作为`Referer`字段的一部分发送到服务器。如果`Referer`字段表明...

    Referer原理与图片防盗链实现方法详解

    本文实例讲述了Referer原理与图片防盗链实现方法。分享给大家供大家参考,具体如下: 1、图片防盗链 在一些大型网站中,比如百度贴吧,该站点的图片采用了防盗链的规则,以至于使用下面代码会发生错误。 简单代码: ...

    WBAL防盗链工具 v0.1

    三、WBAL防盗链工具工作原理 1. HTTP头部检查:工具会检查HTTP请求头部的Referer字段,如果Referer不在白名单内,或者为空,可能会被认为是非法请求,从而阻止资源加载。 2. IP限制:可以通过配置IP白名单,只允许...

    防盗链filter

    本篇文章将深入探讨Java防盗链filter的工作原理、实现方式以及其在实际应用中的重要性。 首先,理解什么是"filter"。在Java Web开发中,Filter是Servlet API的一部分,它允许开发者在请求到达目标Servlet之前或之后...

    WBAL防盗链工具

    综上所述,WBAL防盗链工具通过利用ASP.Net的编程优势,实现了一套有效的防盗链解决方案,保护了网站的资源安全,提升了服务质量。对于运行ASP.Net平台的网站来说,这样的工具无疑是一个宝贵的防护工具。

    在ASP.net中实现基于UrlRewrite的防盗链

    配置文件(通常为XML格式)是实现防盗链的关键部分。例如,提供的配置文件中有以下元素: - `CheckType`:定义了验证的类型,可以是基于域名(1)、基于Cookie(2)或两者都验证(3)。 - `CookiesName`:指定需要...

    ASP.NET网站防盗链代码

    本文将深入探讨如何实现ASP.NET中的防盗链代码,以及其背后的原理。 首先,我们要了解什么是防盗链。防盗链(Hotlinking Protection)是指一种防止外部网站直接链接到你的服务器上资源的技术。当一个网站通过`&lt;img&gt;...

    破解图片防盗链servlet

    #### 一、图片防盗链机制的理解与原理 1. **防盗链的概念**:防盗链(Hotlink Protection)是指网站为了防止其他站点未经允许直接链接自己的资源(如图片、视频等),采取的一种技术手段,用以避免资源被非法使用...

    PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】

    通过了解防盗链的原理和PHP实现图片防盗链破解的实例,可以加深对网络安全和资源保护策略的理解。对于网站开发者来说,了解并掌握如何正确地实施和破解防盗链措施,有助于提高网站资源的保护能力,同时也需要认识到...

    httpHandler实战应用:RSS-图片防盗链接-图片验证码

    本实战应用主要探讨如何利用HTTPHandler实现RSS图片防盗链和图片验证码功能,这些都是网站安全和内容保护的重要手段。 首先,让我们详细了解HTTPHandler。HTTPHandler是ASP.NET中的一个接口(IHttpHandler),它...

    C# ASP.NET 模块 - 防盗链模块

    首先,让我们了解防盗链的基本原理。防盗链主要是通过检查HTTP请求头中的Referer字段来实现的。这个字段包含了用户点击链接前所在页面的URL。当用户直接访问资源URL时,Referer字段通常为空或者不是来自您的站点,...

    Asp.net防盗链实例源码_aspx开发教程.rar

    首先,防盗链的基本原理是通过检查HTTP请求的Referer头来判断请求是否来源于合法的页面。Referer头包含了用户访问当前页面之前的URL,如果Referer头不存在或者来自非预期的网站,那么系统会认为这是一个非法请求,并...

Global site tag (gtag.js) - Google Analytics