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 である必要があります。アクセシビリティのレベルが異なるデータメンバーを混在させると、クラスの目的が不明瞭になります。