Должен ли AntiForgeryToken находиться внутри тега формы

Все примеры, которые я видел, имеют AntiForgeryToken внутри тега <form>:

@Using Html.BeginForm("DoThis", "FromHere", FormMethod.Post, New With {.id = "MyId"})
    @Html.AntiForgeryToken()
End Using

Это требуется? Я делаю сообщения обратно на сервер, используя вызовы ajax/jQuery. Я использую приведенный здесь пример (preFilter), чтобы получить AntiForgeryToken. У меня просто нет моего AntyForgeryToken внутри тега формы. Я просто поместил его на свою корневую страницу _Layout и назвал его хорошим. Зачем мне делать что-то еще? Я не могу понять, почему я должен...


person Wade    schedule 16.05.2014    source источник
comment
AntiForgeryToken полезен из соображений безопасности (помогает предотвратить межсайтовый скриптинг). Если вам все равно или вам не нужно защищать свое приложение (локальное приложение, интранет и т. д.), то оно вам не нужно. Взгляните на devcurry.com/ 2013/01/what-is-antiforgerytoken-and-why-do-i.html   -  person gilles emmanuel    schedule 17.05.2014


Ответы (1)


В примерах у них есть защита от подделки в теге формы, поэтому, когда форма публикуется с помощью нажатия кнопки отправки, она автоматически публикуется со всеми другими переменными формы. Если вы вручную публикуете данные через ajax, токен защиты от подделки может быть сгенерирован где угодно, но вам нужно будет получить это значение и опубликовать его вместе с любыми другими данными, которые вы отправляете на сервер.

Убедитесь, что вы назвали свойство маркера защиты от подделки так же, как и вспомогательный метод HTML ("__RequestVerificationToken").

person MDiesel    schedule 16.05.2014
comment
Что ж, я не называю токен защиты от подделки, поскольку я позволяю html-хелперу справиться с этим. И я так и думал, я просто хотел получить четкий ответ, спасибо @MDiesel! - person Wade; 17.05.2014