2009-07-20 70 views
4

我在ASP.NET MVC表单中使用了AntiForgeryToken。如果我在浏览器中停用cookie并发送,我会收到以下错误消息:如何在ASP.NET MVC中捕获HttpAntiForgeryException

未提供所需的防伪标记或无效。

如何防止显示此消息?我宁愿将用户重定向到另一个页面。

我已激活的customErrors,其中包括此的HandleError在我的控制器:

[HandleError(ExceptionType=typeof(HttpAntiForgeryException), View="Index")] 
public class MyController : Controller 
{ 
... 
} 

的的HandleError被忽略。

有没有人有解决方案?

回答

1

它工作正常,我:)

我注意到你所指定的错误观点是“指数” - 这可能有一个在此认为,只有在这种错误情况表明了一个错误? HandleErrorAttribute将显示这个“Index”视图,而不执行操作本身 - 如果你的Index action方法是在ViewData中设置View依赖的对象来工作,那么错误将不会被正确处理,你会得到丑陋的黄色页。

如果这不能解决它,你测试了其他错误的错误处理,使其工作?有些事情,可能会导致错误不能被处理:

  1. 自定义错误并不在你的web.config
  2. 错误在你看来
  3. ,该视图使用母版页错误。
0

我觉得防伪标记的点是只阻止通过其他网站代表经过身份验证的用户的请求。因此,如果您可以在没有Cookie的情况下合法访问表单,这意味着您可以在未经过身份验证的情况下访问该表单,因此无需保护它免受CSRF攻击。

我希望有人纠正我,如果我错了。

+0

如果我的理解正确,防伪标记也应该保护我的页面免受机器人攻击。由于没有令牌,任何控制器操作都可以被任何其他网页调用。 我不知道风险有多高,但我认为安全比对不起。 – user141425 2009-07-27 15:31:36