当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  图片地址防盗链,通过IHttpHandler实现 2

 图片地址防盗链,通过IHttpHandler实现 2

点击次数:16 次 发布日期:2008-11-26 11:10:58 作者:源代码网
源代码网推荐      /// <summary>
源代码网推荐   /// 输出真实文件
源代码网推荐   /// </summary>
源代码网推荐   /// <param name="response"></param>
源代码网推荐   /// <param name="context"></param>
源代码网推荐   private void Real(HttpResponse response,HttpRequest request)
源代码网推荐   {
源代码网推荐   FileInfo file = new System.IO.FileInfo(request.PhysicalPath);
源代码网推荐  
源代码网推荐   response.Clear();
源代码网推荐  
源代码网推荐   response.AddHeader("Content-Disposition", "filename=" + file.Name);
源代码网推荐  
源代码网推荐   response.AddHeader("Content-Length", file.Length.ToString());
源代码网推荐  
源代码网推荐   string fileExtension = file.Extension.ToLower();
源代码网推荐  
源代码网推荐  
源代码网推荐   //这里选择输出的文件格式
源代码网推荐   //可以参考http://ewebapp.cnblogs.com/articles/234756.html增加对更多文件格式的支持.
源代码网推荐  
源代码网推荐  
源代码网推荐   switch (fileExtension)
源代码网推荐   {
源代码网推荐  
源代码网推荐   case "mp3":
源代码网推荐   response.ContentType = "audio/mpeg3";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   case "mpeg":
源代码网推荐  
源代码网推荐   response.ContentType = "video/mpeg";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   case "jpg":
源代码网推荐  
源代码网推荐   response.ContentType = "image/jpeg";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   case "bmp":
源代码网推荐  
源代码网推荐   response.ContentType = "image/bmp";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   case "gif":
源代码网推荐  
源代码网推荐   response.ContentType = "image/gif";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   case "doc":
源代码网推荐  
源代码网推荐   response.ContentType = "application/msword";
源代码网推荐  
源代码网推荐   break;
源代码网推荐   case "CSS":
源代码网推荐  
源代码网推荐   response.ContentType = "text/css";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   default:
源代码网推荐  
源代码网推荐   response.ContentType = "application/octet-stream";
源代码网推荐   break;
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐   response.WriteFile(file.FullName);
源代码网推荐  
源代码网推荐   response.End();
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐   /// <summary>
源代码网推荐   /// 确认字符串是否为空
源代码网推荐   /// </summary>
源代码网推荐   /// <param name="_value"></param>
源代码网推荐   /// <returns></returns>
源代码网推荐   private bool Empty(string _value)
源代码网推荐   {
源代码网推荐   if(_value == null | _value == string.Empty | _value == "")
源代码网推荐   {
源代码网推荐   return true;
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   return false;
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐   /// <summary>
源代码网推荐   /// 检查是否是非法链接
源代码网推荐   /// </summary>
源代码网推荐   /// <param name="context"></param>
源代码网推荐   /// <param name="_myDomain"></param>
源代码网推荐   /// <returns></returns>
源代码网推荐   private bool errorLink(HttpContext context,out string _myDomain)
源代码网推荐   {
源代码网推荐   HttpResponse response = context.Response;
源代码网推荐   string myDomain = context.Request.ServerVariables["SERVER_NAME"];
源代码网推荐   _myDomain = myDomain ;
源代码网推荐   string myDomainIp = context.Request.UserHostAddress;
源代码网推荐  
源代码网推荐  
源代码网推荐   eWebapp_NoLink = ConfigurationSettings.AppSettings["eWebapp_NoLink"];
源代码网推荐   eWebapp_AllowLink = ConfigurationSettings.AppSettings["eWebapp_AllowLink"];
源代码网推荐  
源代码网推荐   try
源代码网推荐   {
源代码网推荐   eWebapp_AllowOnlyFile = Convert.ToBoolean(ConfigurationSettings.AppSettings["eWebapp_AllowOnlyFile"]);
源代码网推荐   }
源代码网推荐   catch
源代码网推荐   {
源代码网推荐   eWebapp_AllowOnlyFile = true;
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐   if(context.Request.UrlReferrer != null)
源代码网推荐   {
源代码网推荐  
源代码网推荐  
源代码网推荐   //判定referDomain是否存在网站的IP或域名
源代码网推荐   string referDomain = context.Request.UrlReferrer.AbsoluteUri.Replace(context.Request.UrlReferrer.AbsolutePath,"");
源代码网推荐   string myPath = context.Request.RawUrl;
源代码网推荐  
源代码网推荐   if(referDomain.IndexOf(myDomainIp) >=0 | referDomain.IndexOf(myDomain)>=0)
源代码网推荐   {
源代码网推荐   return false;
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   //这里使用正则表达对规则进行匹配
源代码网推荐   try
源代码网推荐   {
源代码网推荐   Regex myRegex ;
源代码网推荐  
源代码网推荐   //检查允许匹配
源代码网推荐   if(!Empty(eWebapp_AllowLink))
源代码网推荐   {
源代码网推荐  
源代码网推荐   myRegex = new Regex(eWebapp_AllowLink);
源代码网推荐  
源代码网推荐   if(myRegex.IsMatch(myPath))
源代码网推荐   {
源代码网推荐   return false;
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  
源代码网推荐   //检查禁止匹配
源代码网推荐   if(!Empty(eWebapp_NoLink))
源代码网推荐   {
源代码网推荐  
源代码网推荐   myRegex = new Regex(eWebapp_NoLink);
源代码网推荐   if(myRegex.IsMatch(myPath))
源代码网推荐   {
源代码网推荐   return true;
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   return false;
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   return true;
源代码网推荐  
源代码网推荐   }
源代码网推荐   catch
源代码网推荐   {
源代码网推荐   //如果匹配出错,链接错误
源代码网推荐   return true;
源代码网推荐   }
源代码网推荐   }
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   //是否允许直接访问文件
源代码网推荐   if(eWebapp_AllowOnlyFile)
源代码网推荐   {
源代码网推荐   return false;
源代码网推荐   }
源代码网推荐   else
源代码网推荐   {
源代码网推荐   return true;
源代码网推荐   }
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐   }
源代码网推荐  
源代码网推荐  }
源代码网推荐  http://www.cnblogs.com/zhouxujian/archive/2006/10/12/527673.html
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华