Asp.net mvc MVC2中的csrf和防伪令牌,不想验证ajax post

Asp.net mvc MVC2中的csrf和防伪令牌,不想验证ajax post,asp.net-mvc,asp.net-mvc-2,csrf,Asp.net Mvc,Asp.net Mvc 2,Csrf,我想使用ValidateAntiForgeryToken,但是。。。我只想在行动上使用它 我经常发邮件给他。而不是带有json的ajax。因为攻击者通常会被跨域限制阻止。我的问题是: 如果我有一个我知道我只在AJAX中发布JSON调用的操作,在这种情况下antiforgerytoken不起作用,那么我想确保该请求确实是一个AJAX请求,这意味着它确实来自我的站点,我如何在ASP.Net MVC 2中做到这一点 因此,我的总体想法是:将ValidateAntiForgeryToken属性放在具有常

我想使用ValidateAntiForgeryToken,但是。。。我只想在行动上使用它 我经常发邮件给他。而不是带有json的ajax。因为攻击者通常会被跨域限制阻止。我的问题是:

如果我有一个我知道我只在AJAX中发布JSON调用的操作,在这种情况下antiforgerytoken不起作用,那么我想确保该请求确实是一个AJAX请求,这意味着它确实来自我的站点,我如何在ASP.Net MVC 2中做到这一点

因此,我的总体想法是:将ValidateAntiForgeryToken属性放在具有常规post的所有操作上。并验证一篇文章在所有其他ACITON中是否真的是一篇ajax文章

那么,我如何确保一个动作的帖子是真正的AJAX,而不仅仅是一篇普通的帖子呢


谢谢

您必须编写自己的ValidateAntiForgeryTokenAttribute

我只需要获取现有属性的源代码并将其复制到您的WIN类中,然后对其进行修改,以便OnAuthorization方法检查“filterContext.RequestContext.HttpContext.Request.IsAjaxRequest”,并且仅在错误时执行CSRF验证

您还可以轻松地将CSRF令牌附加到AJAX请求中,我认为这是解决问题的更好方法