CA5404: トークンの検証チェックを無効にしない
プロパティ | 値 |
---|---|
ルール ID | CA5404 |
Title | トークンの検証チェックを無効にしない |
[カテゴリ] | Security |
修正が中断か中断なしであるか | なし |
.NET 8 では既定で有効 | いいえ |
原因
TokenValidationParameters のプロパティ RequireExpirationTime
、ValidateAudience
、ValidateIssuer
、または ValidateLifetime
が false
に設定されています。
規則の説明
トークンの検証チェックでは、トークンの検証中にすべての側面が分析され、検証されます。 検証を無効にすると、信頼されていないトークンが検証を通過してしまい、セキュリティ ホールが生じる可能性があります。
トークン検証のベスト プラクティスの詳細については、ライブラリの Wiki を参照してください。
違反の修正方法
TokenValidationParameters のプロパティ RequireExpirationTime
、ValidateAudience
、ValidateIssuer
、または ValidateLifetime
を true
に設定します。 または、既定値が true
であるため、false
への割り当てを削除します。
どのようなときに警告を抑制するか
ほとんどの場合、消費側アプリのセキュリティの確保に、この検証は不可欠です。 ただし、特に標準ではないトークンの種類でこの検証は不要な場合があります。 この検証を無効にする前に、必ずセキュリティへの影響を十分に検討してください。 トレードオフの詳細については、トークン検証ライブラリの Wikiを参照してください。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA5404
// The code that's violating the rule is on this line.
#pragma warning restore CA5404
ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA5404.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
疑似コードの例
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.RequireExpirationTime = false;
parameters.ValidateAudience = false;
parameters.ValidateIssuer = false;
parameters.ValidateLifetime = false;
}
}
解決策
using System;
using Microsoft.IdentityModel.Tokens;
class TestClass
{
public void TestMethod()
{
TokenValidationParameters parameters = new TokenValidationParameters();
parameters.RequireExpirationTime = true;
parameters.ValidateAudience = true;
parameters.ValidateIssuer = true;
parameters.ValidateLifetime = true;
}
}
.NET