SV.STRUTS.PRIVATE

如果一个类扩展了 org.apache.struts.action.ActionForm 并且具有一个非私有的类字段。

漏洞与风险

ActionForm 类应仅包含可由 setter 和 getter 访问的私有字段。创建非私有字段违反了本合同,并且引入了避免验证和为 Form 对象创建无效状态的可能性。

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

缓解与预防

使所有字段成为专用。使用 getter 获取字段值。setter 应仅供框架使用;从其他操作中设置操作表单字段是不好的做法,应加以避免。

示例 1

复制
 public class SV_STRUTS_PRIVATE_Sample_1 extends ActionForm {
     private String name;
     protected String birthdayString;
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
     public String getBirthday() {
         return birthdayString;
     }
     public void setBirthday(String birthday) {
         this.birthdayString = birthday;
     }
 }

针对第 12 行的字段声明报告 SV.STRUTS.PRIVATE:Struts:表单字段“birthdayString”应为私有