CA5404:請勿停用權杖驗證檢查

屬性
規則識別碼 CA5404
標題 請勿停用令牌驗證檢查
類別 安全性
修正程式是中斷或非中斷 不中斷
預設在 .NET 8 中啟用 No

原因

將屬性RequireExpirationTimeValidateAudienceValidateIssuerValidateLifetime 設定TokenValidationParametersfalse

檔案描述

令牌驗證檢查可確保驗證令牌時,會分析並驗證所有層面。 關閉驗證可能會導致安全性漏洞,方法是允許不受信任的令牌通過驗證。

如需令牌驗證最佳做法的詳細資訊,請參閱 連結庫的Wiki

如何修正違規

將屬性RequireExpirationTimeValidateAudienceValidateIssuerValidateLifetime 設定TokenValidationParameterstrue。 或者,移除 的指派 false ,因為預設值為 true

隱藏警告的時機

在絕大多數情況下,此驗證對於確保取用應用程式的安全性至關重要。 不過,在某些情況下,不需要此驗證,特別是在非標準令牌類型中。 停用此驗證之前,請確定您已完全思考安全性含意。 如需取捨的相關信息,請參閱 令牌驗證連結庫的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;
    }
}