asp.net 防止图片被其它网站盗链
2009-03-19 17:25
417 查看
我们先分析一般的浏览现象,其中最重要的一点就是一个完整的页面并不是一次全部传送到客户端的.如果你请求的是一个带有许多图片和其它信息的页面,那么最先的一个Http请求被传送回来的是这个页面的文本,然后通过客户端的浏览器对这段文本的解释执行,发现其中还有图片,那么客户端的浏览器会再发送一条Http请求,当这个请求被处理后那么这个图片文件会被传送到客户端,然后浏览器回将图片安放到页面的正确位置,就这样一个完整的页面也许要经过发送多条Http请求才能够被完整的显示.基于这样的机制,就会产生一个问题,那就是盗链问题:就是一个网站中如果没有起页面中所说的信息,例如图片信息,那么它完全可以将这个图片的连接到别的网站.这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的.
那么现在利用ASP.NET中的这HttpHandler能够很好地解决这个问题,之所以能够发生这个问题.就是因为我们在默认状态下只处理那些动态的网页,象asp,aspx等等,但当有请求一个图片文件时,IIS就会直接提取资源并发送给客户端,这样看来就显得有些盲目了吧
所以我们要创建自己的HttpHandler来处理图片文件。例如jpg文件。
(1)建立自己的HttpHandler
创建一个继承了System.Web.IHttpHandler接口的类,在System.Web.IHttpHandler接口只有两个成员
1 IsReusable 属性,其返回一个值代表其他http请求是否可以使用当前继承了 System.Web.IHttpHander接口的类的实例。
2 ProcessRequest(System.Web.HttpContext context) 方法,除了用户自定义中被要求处理的特殊的http请求。
其中的参数 System.Web.HttpContext 类的实例装入了一个http请求中http协议中要求的所有信息。其中System.Web.HttpContext 类中包含有属性 Request 使得从客户端发送过来的http请求信息的值可以被方便地读取;属性Response ,其中封装了需要返回给客户端的信息和操作。当然还有许多常用的属性和方法,在此就不详述了,我们这里只用到这两个属性。
示例代码:
Code
<httpHandlers>
<add verb="*" path="*.jpg" type="Handler1,App_Code.dll"/>
</httpHandlers>
//type = "自定义handler的类的名称,网络应用程序名称"
附:示例源码下载
那么现在利用ASP.NET中的这HttpHandler能够很好地解决这个问题,之所以能够发生这个问题.就是因为我们在默认状态下只处理那些动态的网页,象asp,aspx等等,但当有请求一个图片文件时,IIS就会直接提取资源并发送给客户端,这样看来就显得有些盲目了吧
所以我们要创建自己的HttpHandler来处理图片文件。例如jpg文件。
(1)建立自己的HttpHandler
创建一个继承了System.Web.IHttpHandler接口的类,在System.Web.IHttpHandler接口只有两个成员
1 IsReusable 属性,其返回一个值代表其他http请求是否可以使用当前继承了 System.Web.IHttpHander接口的类的实例。
2 ProcessRequest(System.Web.HttpContext context) 方法,除了用户自定义中被要求处理的特殊的http请求。
其中的参数 System.Web.HttpContext 类的实例装入了一个http请求中http协议中要求的所有信息。其中System.Web.HttpContext 类中包含有属性 Request 使得从客户端发送过来的http请求信息的值可以被方便地读取;属性Response ,其中封装了需要返回给客户端的信息和操作。当然还有许多常用的属性和方法,在此就不详述了,我们这里只用到这两个属性。
示例代码:
Code
<httpHandlers>
<add verb="*" path="*.jpg" type="Handler1,App_Code.dll"/>
</httpHandlers>
//type = "自定义handler的类的名称,网络应用程序名称"
附:示例源码下载
相关文章推荐
- (转)(转)【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
- 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
- Asp.Net Core 通过中间件防止图片盗链的实例
- 防止图片盗链——ASP.NET 技术
- asp.Net下图片防止盗链的原理
- Asp.Net Core 通过中间件防止图片盗链
- 关于 asp.net的网站图片盗链、 、 、
- Asp.Net Core 通过中间件防止图片盗链
- Asp.net MVC防止图片盗链的实现方法,通过自定义RouteHandler来操作
- Asp.net MVC防止图片盗链的实现方法,通过自定义RouteHandler来操作
- Asp.Net图片防止盗链
- Asp.Net Core 通过自定义中间件防止图片盗链的实例(转)
- Asp.net MVC 利用自定义RouteHandler来防止图片盗链
- 【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链
- 【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链 (转)
- asp.net网站图片计数器!
- ASP.NET网站防止SQL注入攻击
- ASP.NET 防止网站攻击,必须过滤的脚本函数
- ASP.NET环境下配置FCKEditor并上传图片及其它文件
- ASP.NET下载网站上的地图图片(精)