ASP.NET防伪令牌与JSON有效载荷

ASP.NET MVC中包含了AntiForgeryToken辅助方法,可以使用用户指定的令牌(token)来探测和阻断跨站请求伪造(CSRF)攻击。不过,在创建基本的Ajax请求或使用Knockout、Backbone这种包含JSON有效载荷(playload)的JavaScript框架时,需要对这种方法做一些修改。

AntiForgeryToken辅助方法与表单(Form)一起工作,后者以POST方式提交,包含一个用于存储令牌的隐藏字段。ValidateAntiForgeryToken只着眼于提交的表单值。要想让它能处理JSON请求,可以使用以下方法之一:

  • 对于简单的jQuery Ajax请求,可以为每个页面创建单独的表单,包含存储令牌的字段,并将其显式地用于POST请求。
  • Sergy Barskiy展示了如何创建自定义特性,以不同于解析普通有效载荷的方式来解析JSON有效载荷。
  • Justin Etheredge展示了如何使用自定义的辅助方法来添加元头(meta-head)标签和自定义特性。

以上所有解决方案都依赖于直接设置__RequestVerificationToken字段的值。该字段是MVC框架中的常量。

要学习更多关于ASP.NET MVC令牌辅助方法如何阻止CSRF攻击的知识,可以阅读Steven Sanderson的文章。

查看英文原文:http://www.infoq.com/news/2012/10/anti-forgery-aspnet-json

感谢侯伯薇对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(ASP.NET防伪令牌与JSON有效载荷)