CS.EXCEPT.NO_LOG

すべての例外が、標準のロガーでログ記録されるか、再スローされるようにします。

この規則は、キャッチされた例外を標準のロガーでログに記録しないコード、またはキャッチされた例外を再スローしないコードを識別します。

軽減と防止

ロギングメカニズムを使用してキャッチされた例外を追跡することで、潜在的なセキュリティ脆弱性のより明確でより安全な概要を提示できます。この情報は、迅速で正確な修正を行うために役立ちます。

この規則を実施することで、OWASP 2007 トップ 10 アプリケーションの脆弱性「A6 - 情報漏洩と不適切なエラー処理」を防ぐために役立ちます。

脆弱コード例

コピー
  public class Example
  {
      public void readFile(String fileName)
      {
          try
          {
              FileInfo fi = new FileInfo(fileName);
              FileStream fs = fi.OpenRead();
              fs.Close();
         }
         catch (IOException e)
         {
             Console.WriteLine("Exception found");
         }
     }
 }

違反は 11 行目で報告されます。

修正コード例

コピー
  public class Example
  {
      public void readFile(String fileName)
      {
          try
          {
             FileInfo fi = new FileInfo(fileName);
              FileStream fs = fi.OpenRead();
              fs.Close();
         }
         catch (IOException e) // FIX
         {
             (new Logger()).Error("Failed to read file." + e.Message);
         }
     }
     public class Logger
     {
         public void Error(string errorDetails)
         {
             /* Logging the error */
         }
     }
 }