共用方式為


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()
        {
        }
    }
}

請勿隱藏此規則的警告。