| IBM Security Appscan漏洞筛查-跨站请求伪造,该漏洞的产生,有多种情况: 1.WebApi的跨站请求伪造,需要对WebApi的请求头部做限制(此文不做详细介绍); 2.MVC Action Post接口的跨站请求伪造,具体解决方案,请查看mvc 当中 [ValidateAntiForgeryToken] 的作用; 3. MVC Action Get接口,例如: 跳转页面,数据查询等接口,使用验证HTTP Referer字段 防止跨站请求伪造攻击。 具体实现思路 定义RefererAttribute继承自ActionFilterAttribute,在Action执行之前,进行拦截;  
  
   
   /// <summary>  
   
   
   /// Referer(安全)拦截组件  
   
   
   /// </summary>  
   
   
   public class RefererAttribute : ActionFilterAttribute  
   
   
   {  
   
   
       private ExcuteMode _customMode;  
   
   
       /// <summary>默认构造</summary>  
   
   
       public RefererAttribute(ExcuteMode Mode)  
   
   
       {  
   
   
           _customMode = Mode;  
   
   
       }  
   
  
      
   
   
       /// <summary>  
   
   
       /// 安全认证  
   
   
       /// </summary>  
   
   
       /// <param name="filterContext"></param>  
   
   
       public override void OnActionExecuting(ActionExecutingContext filterContext)  
   
   
       {  
   
   
           //是否忽略  
   
   
           if (_customMode == ExcuteMode.Ignore)  
   
   
           {  
   
   
               return;  
   
   
           }  
   
   
           var request = filterContext.HttpContext.Request;  
   
  
      
   
   
           if (request.Headers.Get("Referer").IndexOf(Config.GetValue("WebUrl")) > -1  
   
   
               || request.Headers.Get("Referer").IndexOf(Config.GetValue("NwWebUrl")) > -1  
   
   
               )  
   
   
           {  
   
   
               return;  
   
   
           }  
   
   
           else  
   
   
           {  
   
   
               throw new Exception("跨域防伪攻击:" + request.Headers.Get("Referer"));  
   
   
           }  
   
   
       }  
   
   
   }  
   在Controller层增加特性,则所有Action在执行之前都会进行拦截。 
 参考: IBM Security Appscan漏洞--跨站点请求伪造 |