jQueryAjax调用和Html.antiForgeryToken()

jQueryAjax调用和Html.antiForgeryToken()

我已经在我的应用程序中实现了CSRF攻击以下是我在网上的一些博客上看到的信息。特别是,这些职位一直是我实施的驱动因素。

基本上,这些文章和建议说,为了防止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) {
            // ....
        }
    });});


浮云间
浏览 1148回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP