图片防盗链

在此,网站图片防盗链的方法是,通过获取Http请求头中的 Referer 标头与本网站域名比较,来判断用户是否来自本站跳转过来的

创建一个全局处理程序,用来处理images目录下的图片的直接请求

View Code
 1 using System;
 2 using System.Web;
 3 
 4 /// <summary>
 5 ///DaoLian 的摘要说明
 6 /// </summary>
 7 public class DaoLian:IHttpHandler
 8 {
 9     public bool IsReusable
10     {
11         get { return false; }
12     }
13 
14     public void ProcessRequest(HttpContext context)
15     {
16         context.Response.ContentType = "image/jpeg";
17         //
18         //当前请求 的地址
19         Uri url = context.Request.Url;
20         Uri urlReferrer = context.Request.UrlReferrer;
21         if (urlReferrer != null)
22         {
23             //判断域名和端口号是否相等
24             if (IsSameDomain(url,urlReferrer))
25             {
26                 //获取当前请求的图片的绝对路径
27                 string path = context.Request.MapPath(context.Request.RawUrl);
28                 context.Response.WriteFile(path);
29             }
30             else
31             {
32                 //盗链图片的地址
33                 string path = context.Request.MapPath("../daolian.jpg");
34                 context.Response.WriteFile(path);
35             }
36         }
37         else
38         {
39             //盗链图片的地址
40             string path = context.Request.MapPath("../daolian.jpg");
41             context.Response.WriteFile(path);
42         }
43     }
44     //判断域名和端口号是否相等
45     bool IsSameDomain(Uri url1,Uri url2)
46     {
47         return Uri.Compare(url1, url2, UriComponents.HostAndPort, UriFormat.Unescaped, StringComparison.CurrentCultureIgnoreCase) == 0;
48     }
49 }

在web.config中添加图片文件处理的HttpHander

<system.web>
<httpHandlers>
<add path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" verb="*" type="DaoLian" />
</httpHandlers>
</system.web>

 


 

posted @ 2012-08-17 21:54  hello*boy  阅读(345)  评论(0编辑  收藏  举报