説明
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を削除して偽造防止トークンを要求するか、ブラウザーが自動送信しない認証方式を使ってください。