• ASP.NET保护图片防盗链技术思路之一


    现在网络中有很多网站提供图片相册功能,为了吸引大量稳定的使用者和浏览者,需要对浏览图片做限制,以免图片被随意链接到其他网站上无代价的利用,杜绝不劳而获。这样做,一方面是尊重图片版权,一方面也是凸现自身网站的图片价值的方法。大家在引用搜狐相册图片、163相册图片、QQ空间图片.....时,如果涉及到防盗链的图片,就会看到一张公用图片提示大家“此图片来自某某相册”,却不显示图片内容。这就是防盗链技术的应用。

    假设某个网络服务器日志分析中出现大量来自陌生站点的引用痕迹,通过跟踪引用的内容,发现是自己网站上某份相当有分量有影响力的图片被大量引用。并且每个引用的请求都占用的一定量的带宽,这些引用访问并未对自己网站产生任何有价值的影响,却占用了不少带宽,图片却被某些陌生网站随意拿走利用,说严重一点,也可以认为是窃取。这种现象就需要从技术上采取措施,防止盗链,使自己网站带宽能被更有价值的利用,而不是浪费。

    本文提出一种解决方法。当然,技术无止境,这不是唯一的方法,亦不是性能最优良的方法,欢迎讨论:)

    具体思路是,利用ASP.NET内建的处理器HttpHandler检查对图片文件的引用请求信息是否来源于自己的网站,而不是其他站点。如果用户是在浏览器地址栏直接输入图片地址,那么对图片文件的引用请求为空NULL。如果是其他网站盗链,那么对图片文件的引用请求即为其他网站地址。对于这两种情况,可以提供一个替换图片向用户表明放盗链的态度,而不在浏览器上显示真正的图片。这个替换图片,就是上文提到的,一张写有“此图片来自某某相册”字样的公用图片。

    ASP.NET内建的处理器HttpHandler是一种特别的类,能够对ASP.NET进行扩展,用于处理对某种特定文件的请求,例如对图片文件的请求。并且,程序员可以创建自己的处理器处理对页面的请求,进而替换整个页面处理系统。
    要创建一个HttpHandler,首先需要创建一个实现IHttpHandler接口的类。通常在machine.config文件中配置HttpHandler,类似这样的写法:
    <httphandlers>
    ......
    <add verb="*" path="*.aspx" tyype="System.Web.UI.PageHandlerFactory">
    ......
    </httphandlers>

    然后,编写实现接口的类
    C#写法:
    public class MyHttphandler : IHttpHandler
    {
     public void ProcessRequest(HttpContext context)
     {
      // 此处放置具体功能代码,处理请求,作出响应,发现盗链显示替代图片
     }
     public bool isReusable
     {
      // 此成员定义处理器实例能否被多个请求复用
      get {return true;}
     }
    }

    VB.NET写法:
    Public Class MyHttphandler
     Implements IHttpHandler
     Public Sub ProcessRequest(context AS HttpContext)
      ' 此处放置具体功能代码,处理请求,作出响应,发现盗链显示替代图片
     End Sub
     Public ReadOnly Property isReusable() AS Boolean
      ' 此成员定义处理器实例能否被多个请求复用
      Get
       Return True
      End Get
     End Property
    End Class

    然后,在web.config文件中添加HttpHandler,类似这样的写法:
    <configuration>
     ......
     <system.web>
      <HttpHandlers>
       <add verb="*" path="*.jpg" type="MyClass, MyDll" />
      </HttpHandlers>
     </system.web>
     ......
    </configuration>

    思路如上,具体代码中还应填充更多功能代码,例如具体定义处理哪几类图片,替换成什么图片,等等

  • 相关阅读:
    Kafka之消费者与消费者组
    Kafka之生产者
    基于Redis+Lua的分布式限流
    限流方案常用算法讲解
    分布式服务限流
    微服务框架服务调用与容错
    ZooKeeper实现服务注册中心
    微服务注册中心
    让我自己来整理
    Netty框架
  • 原文地址:https://www.cnblogs.com/bdzwater/p/2626561.html
Copyright © 2020-2023  润新知