CA5395: アクション メソッドの HttpVerb 属性がありません

プロパティ
ルール ID CA5395
Title アクション メソッドの HttpVerb 属性がありません
[カテゴリ] Security
修正が中断か中断なしであるか なし
.NET 8 では既定で有効 いいえ

原因

アクション メソッドに対して HTTP 要求の種類が明示的に指定されていません。

規則の説明

データの作成、編集、削除、またはそれ以外の変更を行うすべてのアクション メソッドは、偽造防止属性を使用してクロスサイト リクエスト フォージェリ攻撃から保護する必要があります。 GET 操作の実行は、副作用がなく、永続化されたデータを変更しない、安全な操作である必要があります。

違反の修正方法

アクション メソッドを HttpVerb 属性でマークします。

どのようなときに警告を抑制するか

次の場合は、この規則による警告を抑制しても問題ありません。

警告を抑制する

単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。

#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395

ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none に設定します。

[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none

詳細については、「コード分析の警告を抑制する方法」を参照してください。

疑似コードの例

違反

using Microsoft.AspNetCore.Mvc;

[ValidateAntiForgeryToken]
class BlahController : Controller
{
}

class ExampleController : Controller
{
    public IActionResult ExampleAction()
    {
        return null;
    }
}

解決策

using Microsoft.AspNetCore.Mvc;

[ValidateAntiForgeryToken]
class BlahController : Controller
{
}

class ExampleController : Controller
{
    [HttpGet]
    public IActionResult ExampleAction()
    {
        return null;
    }
}