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 加以保護