CA2143:透明方法不可以使用安全性要求

型別名稱

TransparentMethodsShouldNotDemand

CheckId

CA2143

分類

Microsoft.Security

中斷變更

中斷

原因

透明型別或方法會以宣告方式標示 System.Security.Permissions.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()
        {
        }
    }
}

請參閱

參考

CA2142:透明程式碼不可以使用 LinkDemand 加以保護