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, потребуют от клиента использования токенов защиты от подделки.