iT邦幫忙

2022 iThome 鐵人賽

DAY 19
1
Software Development

ASP.NET Core 30 天旅程系列 第 19

[Day19]- Antiforgery Token 的 Filters

  • 分享至 

  • xImage
  •  

ASP.NET Core包含三個篩選準則,可用於 Antiforgery Token:

  • ValidateAntiForgeryToken
  • AutoValidateAntiforgeryToken
  • IgnoreAntiforgeryToken

需要 AntiForgery 驗證

ValidateAntiForgeryToken 可以套用至 Action、Controller 或全域Action。 如果 Request 不包含有效的 Antiforgery Token,會遭到封鎖。

[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index()
{
    // ...

    return RedirectToAction();
}

覆寫全域或 Controller Antiforgery 屬性

IgnoreAntiforgeryToken 可以套用至全域或是指定 Action 、Controller 取消驗證 AntiforgeryToken。

[IgnoreAntiforgeryToken]
public IActionResult IndexOverride()
{
    // ...

    return RedirectToAction();
}

針對不安全的 HTTP 方法自動驗證 AntiForgery Token

AutoValidateAntiforgeryToken 屬性的運作方式與 ValidateAntiForgeryToken 屬性相同,但AutoValidateAntiforgeryToken只針對不安全的 HTTP Methods 進行自動驗證,會忽略下列

  • GET
  • HEAD
  • OPTIONS
  • TRACE
    在這些 HTTP Methods 上不需要另外加上 [IgnoreAntiforgeryToken],就會自動排除驗證 AntiforgeryToken。(在非Web API的專案上建議使用這個)

類別層級範例

[AutoValidateAntiforgeryToken]
public class HomeController : Controller

全域範例

builder.Services.AddControllersWithViews(options =>
{
    options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});

在使用者通過驗證之後,應該重新整理 Token,方法是將使用者重新導向至檢視或 Razor 頁面。


參考資料

跨站請求偽造
Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core


上一篇
[Day18]-防止跨網站偽造要求 (XSRF/CSRF) 攻擊
下一篇
[Day20]-重新導向攻擊 & IP 安全清單
系列文
ASP.NET Core 30 天旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言