CA5395: アクション メソッドの HttpVerb 属性がありません
プロパティ | 値 |
---|---|
ルール ID | CA5395 |
Title | アクション メソッドの HttpVerb 属性がありません |
[カテゴリ] | Security |
修正が中断か中断なしであるか | なし |
.NET 8 では既定で有効 | いいえ |
原因
アクション メソッドに対して HTTP 要求の種類が明示的に指定されていません。
規則の説明
データの作成、編集、削除、またはそれ以外の変更を行うすべてのアクション メソッドは、偽造防止属性を使用してクロスサイト リクエスト フォージェリ攻撃から保護する必要があります。 GET 操作の実行は、副作用がなく、永続化されたデータを変更しない、安全な操作である必要があります。
違反の修正方法
アクション メソッドを HttpVerb
属性でマークします。
どのようなときに警告を抑制するか
次の場合は、この規則による警告を抑制しても問題ありません。
- アクション メソッドで変更操作が行われないことが分かっている。 または、アクション メソッドではない。
- 偽造防止トークン属性を使用する以外のソリューションが CSRF 脆弱性を軽減するために採用されている。 詳細については、「ASP.NET Core でのクロスサイト リクエスト フォージェリ (XSRF/CSRF) 攻撃の防止」を参照してください。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#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;
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET