Я реализовал в своем приложении защиту от атак 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) {
// ....
}
});
});