jQuery Ajax-вызовы и Html.AntiForgeryToken ()

Я реализовал в своем приложении защиту от атак CSRF , следуя информации, которую я прочитал в каком-то сообщении в блоге в Интернете. В частности, этот пост был драйвером моей реализации

В основном в этих статьях и рекомендациях говорится, что для предотвращения атаки CSRF любой должен реализовать следующий код :

1) Добавьте [ValidateAntiForgeryToken] для каждого действия, которое принимает команду POST Http

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SomeAction( SomeModel model ) {
}

2) Добавьте помощник внутри форм, который отправляет данные на сервер

<%= Html.AntiForgeryToken() %>

В любом случае в некоторых частях моего приложения я отправляю на сервер Ajax POST с jQuery без какой-либо формы. Это происходит, например, когда я разрешаю пользователю щелкнуть изображение, чтобы выполнить определенное действие.

Предположим, у меня есть таблица со списком занятий. У меня есть изображение в столбце таблицы с надписью «Отметить действие как завершенное», и когда пользователь нажимает на это действие, я выполняю Ajax POST, как в следующем примере:

$("a.markAsDone").click(function (event) {
    event.preventDefault();
    $.ajax({
        type: "post",
        dataType: "html",
        url: $(this).attr("rel"),
        data: {},
        success: function (response) {
            // ....
        }
    });
});

Как я могу использовать в этих случаях? Следует ли мне включить вызов помощника в параметр данных вызова 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) {
            // ....
        }
    });
});

198
задан Community 23 May 2017 в 02:34
поделиться