1.前端的處理:前端
2.後臺 ajax
1.)添加過濾器,哪裏用放哪裏安全
2.)須要驗證的方法上直接添加過濾器便可cookie
大功告成ide
如下爲過濾器代碼塊this
/// <summary>
/// ajax中加上AntiForgeryToken防止CSRF攻擊
/// </summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class MyValidateAntiForgeryToken : AuthorizeAttribute
{
private readonly bool _ignore;
/// <summary>
/// 防僞安全屬性
/// </summary>
/// <param name="ignore">是否忽略安全驗證</param>
public MyValidateAntiForgeryToken(bool ignore = false)
{
this._ignore = ignore;
}orm
public override void OnAuthorization(AuthorizationContext filterContext)
{
if (filterContext == null)
throw new ArgumentNullException("filterContext");blog
if (_ignore)
return;ip
if (filterContext.IsChildAction)
return;get
///只處理POST請求
if (!String.Equals(filterContext.HttpContext.Request.HttpMethod, "POST", StringComparison.OrdinalIgnoreCase))
return;
var request = filterContext.HttpContext.Request;var antiForgeryCookie = request.Cookies[AntiForgeryConfig.CookieName];var cookieValue = antiForgeryCookie != null ? antiForgeryCookie.Value : null;AntiForgery.Validate(cookieValue, request.Form["__RequestVerificationToken"]); //從cookies 和 Form中驗證防僞標記 }}