CXX.MEMBER.CRITICAL.PUBLIC.METHOD

重大な private メンバーデータは、public メソッドによって直接書き込み可能であってはなりません

ソフトウェアは、private 変数を読み取るか変更する public メソッドを定義します。

脆弱性とリスク

攻撃者が予期しない値を含むように変数を変更すると、コード内の他の場所で前提が破られる可能性があります。また、攻撃者が private 変数を読み取ることができる場合、機密情報を公開したり、さらなる攻撃をより簡単に始めたりすることができます。

軽減と防止

重大な private メンバーデータは、public メソッドによって直接書き込み可能であってはなりません。

脆弱コード例

コピー
class User {
public
  void setUsername(string newUser){this->username = newuser;};
private
  string username;
};

public と private の非正規のデータメンバーを混在させると、クラスの意図が混在してしまう可能性があります。クラスが大まかに関連した値のコレクションである場合は、すべてのデータメンバーを public にする必要があります。一方、クラスが不変のままであろうとする場合は、すべてのデータメンバーは private である必要があります。アクセシビリティのレベルが異なるデータメンバーを混在させると、クラスの目的が不明瞭になります。