jQueryAjax调用和Html.antiForgeryToken()我已经在我的应用程序中实现了CSRF攻击以下是我在网上的一些博客上看到的信息。特别是,这些职位一直是我实施的驱动因素。ASP.NETMVC的最佳实践来自ASP.NET和Web工具开发人员内容小组一种跨站点请求伪造攻击的剖析菲尔·哈克博客ASP.NETMVC框架中的AntiForgeryToken-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帖子,根本没有任何形式。例如,当我允许用户单击图像来执行特定操作时,就会发生这种情况。假设我有一个列有活动列表的表。表的一个列上有一个图像,上面写着“标记活动为已完成”,当用户单击该活动时,我正在进行Ajax发布,如下面的示例所示:$("a.markAsDone").click(function (event) {
event.preventDefault();
$.ajax({
type: "post",
dataType: "html",
url: $(this).attr("rel"),
data: {},
success: function (response) {
// ....
}
});});如何使用<%= Html.AntiForgeryToken() %>在这种情况下?我应该在Ajax调用的数据参数中包含助手调用吗?很抱歉写了这么长的邮件,非常感谢你的帮助。编辑:按jayrdub答:我用了以下方法$("a.markAsDone").click(function (event) {
event.preventDefault();
$.ajax({
type: "post",
dataType: "html",
url: $(this).attr("rel"),
data: {
AddAntiForgeryToken({}),
id: parseInt($(this).attr("title"))
},
success: function (response) {
// ....
}
});});
目前暂无任何回答
- 0 回答
- 0 关注
- 1148 浏览
添加回答
举报
0/150
提交
取消