EN JP CN

SV.STRUTS.NOTRESET

SV.STRUTS.NOTRESET

このエラーは、クラスが org.apache.struts.action.ActionForm を拡張し、reset メソッドを持つにもかかわらず、一部のフィールドがリセットされていない場合に表示されます。

脆弱性とリスク

IReset メソッドは、要求パラメータがフォームに入力される前に呼び出されます。一部のフィールドがリセットされていない場合、それらのフィールドは古い値を保持しており、攻撃者に利用される可能性があります。クライアント要求は攻撃者が簡単に操作可能であるため、要求内の特定フィールドの存在に左右されないようにする必要があります。

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

軽減と防止

クライアントが入力可能なフィールドはすべてリセットします。フィールドがクライアントによって入力できない場合、通常、Form が何らかのビジネスロジックを実装しようとしているか、ActionForm の一部ではなく、別のクラスによって実行される必要がある出力フォームとして使用されることを意味します。

例 1

13 public class SV_STRUTS_NOTRESET_Sample_1 extends ActionForm {
14     private String name;
15     private String[] cars = new String[10];
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22     public String getCar(int i) {
23         return cars[i];
24     }
25     public void setCar(int i, String car) {
26         this.cars[i] = car;
27     }
28     public void reset(ActionMapping map,
29                       HttpServletRequest req) {
30         cars = new String[10];
31     }
32 }

SV.STRUTS.NOTRESET が 14 行目のフィールド宣言に対して報告されています。Struts:フォームフィールド 'SV_STRUTS_NOTRESET_Sample_1' 'name' が 'reset' メソッドでリセットされていません