CA2143: 透過的メソッドは、セキュリティ確認要求を使用してはならない
TypeName |
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()
{
}
}
}