CA5404:請勿停用權杖驗證檢查
屬性 | 值 |
---|---|
規則識別碼 | CA5404 |
標題 | 請勿停用令牌驗證檢查 |
類別 | 安全性 |
修正程式是中斷或非中斷 | 不中斷 |
預設在 .NET 8 中啟用 | No |
原因
將屬性RequireExpirationTime
、ValidateAudience
、 ValidateIssuer
或 ValidateLifetime
設定TokenValidationParameters為 false
。
檔案描述
令牌驗證檢查可確保驗證令牌時,會分析並驗證所有層面。 關閉驗證可能會導致安全性漏洞,方法是允許不受信任的令牌通過驗證。
如需令牌驗證最佳做法的詳細資訊,請參閱 連結庫的Wiki。
如何修正違規
將屬性RequireExpirationTime
、ValidateAudience
、 ValidateIssuer
或 ValidateLifetime
設定TokenValidationParameters為 true
。 或者,移除 的指派 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;
}
}