AutoValidateAntiForgeryToken против ValidateAntiForgeryToken
Я пытался защитить почтовый метод от бокового скриптинга только сейчас, предоставив токен анти-подделки, но заметил, что в .Net Core есть еще один атрибут, называемый AutoAntiForgeryToken
. Комментарии XML и онлайн-поиск не предоставили много информации об этом новом атрибуте.
Любая помощь и описание того, что представляет собой новый атрибут, будут высоко оценены.
Ответы
Ответ 1
От AutoValidateAntiforgeryTokenAttribute
документация:
Атрибут, который вызывает проверку маркеров antiforgery для всех небезопасные методы HTTP. Для методов HTTP требуется токен антифригации кроме GET, HEAD, OPTIONS и TRACE. Его можно применять в качестве глобальный фильтр, чтобы инициировать проверку токенов антикоррозионной защиты по умолчанию для приложения.
AutoValidateAntiforgeryTokenAttribute
позволяет применять проверку маркера Anti-подделки глобально ко всем небезопасным методам, например. POST, PUT, PATCH and DELETE
. Таким образом, вам не нужно добавлять атрибут [ValidateAntiForgeryToken]
для каждого действия, требующего его.
Чтобы использовать его, добавьте следующий код в свой ConfigureServices
метод Startup
class
services.AddMvc(options =>
{
options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});
Если вам нужно игнорировать проверку анти-подделки, вы можете добавить атрибут [IgnoreAntiforgeryToken]
к действию.
Ответ 2
Иногда вам может понадобиться пометить несколько запросов на контроллере, в то время как для некоторых запросов не требуется защита от подделки, таких как различные действия на основе GET. Есть несколько инструментов, которые вы можете использовать, чтобы помочь процессу стать более удобным и удобным для пользователя. Первым является атрибут AutoValidateAntiforgeryToken. Он ведет себя аналогично атрибуту ValidateAntiForgeryToken; однако он автоматически игнорирует действия, которые вызываются методами: GET, HEAD, OPTIONS и TRACE, которые предназначены для извлечения данных. Это позволяет быстро и легко добавить защиту от подделки ко всем методам, которые могут изменять данные, не влияя на методы извлечения данных.
Следующий код является примером атрибута AutoValidateAntiforgeryToken:
[AutoValidateAntiforgeryToken]
public class AntiForgeController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Index(string userName)
{
return View("Index", userName);
}
[HttpDelete]
public IActionResult RemoveUser(string userName)
{
string url = string.Format("~/RemovedUser/{0}", userName);
return RedirectToAction("Account", "RemoveUser", "User");
}
}
В этом примере обычное действие Index (GET) будет работать независимо от источника, в то время как как действие Index с методом POST, так и действие RemoveUser, являющееся методом DELETE, потребуют от клиента использования токенов защиты от подделки.