IBM Security Appscan漏洞筛查-跨站请求伪造,该漏洞的产生,有多种状况:html
1.WebApi的跨站请求伪造,须要对WebApi的请求头部作限制(此文不作详细介绍);跨域
2.MVC Action Post接口的跨站请求伪造,具体解决方案,请查看mvc 当中 [ValidateAntiForgeryToken] 的做用;安全
3. MVC Action Get接口,例如: 跳转页面,数据查询等接口,使用验证HTTP Referer字段 防止跨站请求伪造攻击。mvc
具体实现思路ide
定义RefererAttribute继承自ActionFilterAttribute,在Action执行以前,进行拦截;spa
-
/// <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在执行以前都会进行拦截。.net

参考:htm
IBM Security Appscan漏洞--跨站点请求伪造blog