EN JP CN

SV.STRUTS.PRIVATE

SV.STRUTS.PRIVATE

このエラーは、クラスが org.apache.struts.action.ActionForm を拡張し、private ではないクラスフィールドを持つ場合に表示されます。

脆弱性とリスク

ActionForm クラスには、setter および getter によってアクセスされる private フィールドのみが含まれる必要があります。private 以外のフィールドの作成は、この規約に違反したものであり、検証を回避する可能性や Form オブジェクトの無効な状態を作り出す可能性を生じています。

Klocwork セキュリティ脆弱性 (SV) チェッカーは、潜在的に危険なデータを生成する呼び出しを特定します。このような呼び出しは安全でないソースと考えられます。ユーザーは攻撃者になる可能性があり、ヒューマンエラーを取り込む可能性があるため、安全でないソースはユーザーが指定した任意のデータである可能性があります。

軽減と防止

すべてのフィールドを private にします。フィールドの値を取得するには、getter を使用します。setter は、フレームワークのみで使用する必要があります。 別のアクションからの action フォームフィールドの設定は好ましくない手法であり、避ける必要があります。

例 1

10 public class SV_STRUTS_PRIVATE_Sample_1 extends ActionForm {
11     private String name;
12     protected String birthdayString;
13     public String getName() {
14         return name;
15     }
16     public void setName(String name) {
17         this.name = name;
18     }
19     public String getBirthday() {
20         return birthdayString;
21     }
22     public void setBirthday(String birthday) {
23         this.birthdayString = birthday;
24     }
25 }

SV.STRUTS.PRIVATE が 12 行目のフィールド宣言に対して報告されています。Struts:フォームフィールド 'birthdayString'が private である必要があります。