CSRF保護の無効化

C#のCSRF保護の無効化

説明

ASP.NET Coreで IgnoreAntiforgeryToken を使うと、対象のコントローラーやアクションで偽造リクエストの検証が無効になります。Cookie認証を使う状態変更リクエストに適用されると、攻撃者がユーザーのブラウザーに意図しない操作を実行させるおそれがあります。

想定される影響

  • 認証Cookieが自動送信され、アカウント設定の変更、決済、データ削除などが実行される可能性があります。
  • 管理機能に適用されている場合、権限を持つユーザーのセッションを悪用されるおそれがあります。

対処方法

状態を変更するアクションから IgnoreAntiforgeryToken を削除し、偽造防止トークンを検証してください。API専用のエンドポイントでは、ブラウザーが自動送信しない認証方式とCORSポリシーを併せて確認してください。

例

変更前

csharp
[IgnoreAntiforgeryToken]
[HttpPost("transfer")]
public IActionResult Transfer()
{
    return Ok();
}

変更後

csharp
[ValidateAntiForgeryToken]
[HttpPost("transfer")]
public IActionResult Transfer()
{
    return Ok();
}

解説:

  • 変更前: 状態を変更するASP.NET Coreエンドポイントで偽造防止の検証を明示的に無効にすると、Cookie認証の使用時にCSRFにつながるおそれがあります。
  • 変更後: 状態変更処理では IgnoreAntiforgeryToken を削除して偽造防止トークンを要求するか、ブラウザーが自動送信しない認証方式を使ってください。

参考資料