次の方法で共有


CA2143: 透過的メソッドは、セキュリティ確認要求を使用してはならない

TypeName

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

参照

関連項目

CA2142: 透過的コードは、LinkDemand を使用して保護されてはならない