CS.SV.TRANSP.SEC_DMD

透過的なメソッドはセキュリティ要求を使用してはなりません。

セキュリティが透過的なコードは、演算のセキュリティを検証する責任を負うべきではないため、許可を要求してはいけません。セキュリティが透過的なコードは、セキュリティ上の決定を行うために完全な要求を使用する必要があり、セーフクリティカルなコードは、完全な要求を行うために透過的なコードに依存するべきではありません。セキュリティ要求などのセキュリティチェックを実行するコードは、代わりにセーフクリティカルでなければなりません。

脆弱性とリスク

一般的に、この規則の違反を修正するには、メソッドを SecuritySafeCriticalAttribute 属性でマークします。要求を削除することもできます。

脆弱コード例

コピー
  using System;
  using System.Security;
  using System.Security.Permissions;
  
  namespace TransparencyWarningsDemo
  {
  
      public class TransparentMethodDemandClass
     {
         // CA2142 violation - transparent code using a Demand.  これは、メソッドをセーフクリティカルにすることで修正できます。
         [PermissionSet(SecurityAction.Demand, Unrestricted = true)]
         public void TransparentMethod()
         {
         }
     }
 }

透過的なメソッドが宣言的なセキュリティ要求を作成するため、規則はそのコードで発動します。