20
jQuery Ajax调用和Html.AntiForgeryToken()
根据我在互联网上的一些博客文章中所阅读的信息,我已经在我的应用程序中实施了缓解CSRF攻击的措施。这些帖子尤其是我实施的驱动力 来自ASP.NET和Web工具开发人员内容团队的ASP.NET MVC最佳实践 Phil Haack博客的跨站点请求伪造攻击剖析 ASP.NET MVC框架中的AntiForgeryToken- David Hayden博客的Html.AntiForgeryToken和ValidateAntiForgeryToken属性 基本上,这些文章和建议都说,为防止CSRF攻击,任何人都应实施以下代码: 1)[ValidateAntiForgeryToken]在接受POST Http动词的每个动作上添加 [HttpPost] [ValidateAntiForgeryToken] public ActionResult SomeAction( SomeModel model ) { } 2)在<%= Html.AntiForgeryToken() %>将数据提交到服务器的表单内添加帮助程序 <div style="text-align:right; padding: 8px;"> <%= Html.AntiForgeryToken() %> <input type="submit" id="btnSave" value="Save" /> </div> 无论如何,在我的应用程序的某些部分中,我都使用jQuery将Ajax POST进行到服务器,而没有任何形式。例如,在发生这种情况时,我让用户单击图像来执行特定操作。 假设我有一个包含活动列表的表。我在表的列上有一幅图像,上面写着“将活动标记为已完成”,当用户单击该活动时,我正在执行Ajax POST,如以下示例所示: $("a.markAsDone").click(function (event) { event.preventDefault(); $.ajax({ type: "post", dataType: …