图片防盗链

在此,网站图片防盗链的方法是,通过获取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>

 

 
  

 

你可能感兴趣的:(图片)