.NET保护图片防盗链技术思路
2012-04-29 17:11
169 查看
此博客是转载百度空间
现在网络中有很多网站提供图片相册功能,为了吸引大量稳定的使用者和浏览者,需要对浏览图片做限制,以免图片被随意链接到其他网站上无代价的利用,杜绝不劳而获。这样做,一方面是尊重图片版权,一方面也是凸现自身网站的图片价值的方法。大家在引用搜狐相册图片、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;}
}
}
然后,在web.config文件中添加HttpHandler,类似这样的写法:
<configuration>
......
<system.web>
<HttpHandlers>
<add verb="*" path="*.jpg" type="MyClass, MyDll" />
</HttpHandlers>
</system.web>
......
</configuration>
思路如上,具体代码中还应填充更多功能代码,例如具体定义处理哪几类图片,替换成什么图片,等等
现在网络中有很多网站提供图片相册功能,为了吸引大量稳定的使用者和浏览者,需要对浏览图片做限制,以免图片被随意链接到其他网站上无代价的利用,杜绝不劳而获。这样做,一方面是尊重图片版权,一方面也是凸现自身网站的图片价值的方法。大家在引用搜狐相册图片、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;}
}
}
然后,在web.config文件中添加HttpHandler,类似这样的写法:
<configuration>
......
<system.web>
<HttpHandlers>
<add verb="*" path="*.jpg" type="MyClass, MyDll" />
</HttpHandlers>
</system.web>
......
</configuration>
思路如上,具体代码中还应填充更多功能代码,例如具体定义处理哪几类图片,替换成什么图片,等等
相关文章推荐
- .NET保护图片防盗链技术思路
- ASP.NET保护图片防盗链技术思路之一
- 一起谈.NET技术,.NET程序员必备参考图片
- 分析优秀的.NET 文档设计工具Vsdocman 7.1 软件保护技术
- 一起谈.NET技术,ASP.NET MVC 2生成动态表单的一种最简单的思路
- .NET在SQL Server中的图片存取技术
- .NET在SQLServer中的图片存取技术
- .net利用ajax技术实现图片上传并回显到界面
- .Net在SqlServer中的图片存取技术
- [技术分享] .NET下 , 上传图片的处理方式 , 贴上代码 .
- DNGuard HVM - 内核级的 .Net 加密保护、混淆保护、虚拟机保护技术
- .Net在SqlServer中的图片存取技术
- .net使用httpHandler添加图片防盗链
- 图片防盗链技术
- .Net在SqlServer中的图片存取技术
- 关于图片vip防盗链的设计思路和方法
- 一起谈.NET技术,以 .NET 创建 Code 39 条码图片 供水晶报表打印
- js图片延迟技术一般的思路与示例
- 详解还原系统保护技术原理和穿透思路