CA2142:透明程式碼不可以使用 LinkDemand 加以保護
項目 | 值 |
---|---|
RuleId | CA2142 |
類別 | Microsoft.Security |
重大變更 | 中斷 |
原因
透明方法需要 SecurityAction 或其他安全性需求。
注意
此規則已遭取代。 如需詳細資訊,請參閱過時的規則。
檔案描述
需要 LinkDemand 才能存取的透明方法會引發這個規則。 安全性透明程式碼不應負責驗證作業的安全性,因此不應要求權限。 因為透明方法應該是安全性中立的,所以不應該做出任何安全性決策。 此外,做安全性決策的安全關鍵程式碼不應該依賴透明程式碼,先前已做出這樣的決定。
如何修正違規
若要修正此規則的違規,請移除透明方法的連結需求,或在執行安全性檢查,例如安全性要求時,使用 SecuritySafeCriticalAttribute 屬性標記方法。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
在下列範例中,規則會在方法上引發,因為方法是透明的,而且會以包含 SecurityAction 的 LinkDemand PermissionSet 標示。
using System;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodsProtectedWithLinkDemandsClass
{
// CA2142 violation - transparent code using a LinkDemand. This can be fixed by removing the LinkDemand
// from the method.
[PermissionSet(SecurityAction.LinkDemand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}
請勿隱藏此規則的警告。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應