CS.METHOD.RETURN.REF_MEMBER

メソッドで参照型が返されるメンバー変数。

メンバー関数は、定数でない限り参照型メンバーを返すべきではありません

脆弱性とリスク

返されたオブジェクトは変更され、意図しない動作を引き起こす可能性があります。

軽減と防止

設計をレビューして、参照型メンバー変数を返す必要があるかどうかを確認します。

脆弱コード例

コピー
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;
  
  namespace kmcustom
  {
  
     class MyCls
     {
         public string _str = "abc";
 
         public void setStr(string str)
         {
             _str = str;
         }
         public string getStr()
         {
             return _str;
         }
 
 
     }
 
     class C16
     {
         private string str = "abc";
 
         private String cstr = "abc";
 
         private int number = 1;
 
         private int[] int_array = new int[5];
 
         private MyCls myCls = new MyCls();
 
         public string getStr()
         {
             return str;//OK - string or String is immutable
         }
 
         public string getCStr()
         {
             return str;//OK - string or String is immutable
         }
 
         public int getNumber()
         {
             return number;//OK
         }
 
         public MyCls getMyCls()
         {
             return myCls;//NG
         }
 
         public int[] getIntArray()
         {
             for(int i = 0; i < int_array.Length; i++) 
             {
                 int_array[i] = 0;
             }
             return int_array;//NG
         }
 
         public void printIntArray()
         {
             for (int i = 0; i < int_array.Length; i++) {
                 Console.WriteLine("index:"+ i + " value:"+ int_array[i]);
             }
 
         }
     }
 }