SV.STRUTS.RESETMET

如果一个类扩展了 org.apache.struts.action.ActionForm 并且未实施“reset”方法,将检测到此错误。

漏洞与风险

reset 方法会在使用请求参数填充表单前被调用。如果某些字段未进行重置,它们可能保留旧值,且这些值可能被攻击者使用。由于客户端请求可轻松被攻击者操纵,不要依赖请求中某些字段的状态。

Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。

缓解与预防

重置客户端可填充的所有字段。如果字段无法由客户端填充,这通常表示,该表单尝试实施某个业务逻辑,或用作输出表单(通常,这种表单不应属于 ActionForm 且应由不同的类实施)。

示例 1

复制
 public class SV_STRUTS_RESETMET_Sample_1 extends ActionForm {
     private String name;
     private String[] cars = new String[10];
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public String getCar(int i) {
         return cars[i];
     }
     public void setCar(int i, String car) {
         this.cars[i] = car;
     }
 }

针对第 10 行的表单声明报告 SV.STRUTS.RESETMET:Struts:表单“SV_STRUTS_RESETMET_Sample_1”未定义方法“reset”

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。