CA2143:透明方法不可以使用安全性要求
型別名稱 |
TransparentMethodsShouldNotDemand |
CheckId |
CA2143 |
分類 |
Microsoft.Security |
中斷變更 |
中斷 |
原因
透明型別或方法會以宣告方式標示 SecurityAction.Demand 要求,或者方法會呼叫 CodeAccessPermission.Demand 方法。
規則描述
安全性透明程式碼不應負責驗證作業的安全性,因此,不應要求權限。安全性透明程式碼應使用完整的要求做出安全性決策,而且安全關鍵程式碼不應依賴透明程式碼提出完全要求。執行這類安全性檢查 (例如安全性要求) 的任何程式碼都應該改為安全性關鍵。
如何修正違規
一般而言,若要修正此規則的違規情形,請將方法標記 SecuritySafeCriticalAttribute 屬性。您也可以移除要求。
隱藏警告的時機
請勿隱藏此規則的警告。
範例
下列程式碼會引發規則,因為透明的方法可提出宣告式安全性要求。
using System;
using System.Security;
using System.Security.Permissions;
namespace TransparencyWarningsDemo
{
public class TransparentMethodDemandClass
{
// CA2142 violation - transparent code using a Demand. This can be fixed by making the method safe critical.
[PermissionSet(SecurityAction.Demand, Unrestricted = true)]
public void TransparentMethod()
{
}
}
}