如何解决循环条件的未检查输入
我在我的代码中的以下几行收到了未经检查的循环条件输入。
String FirstName= request.getParameter("FirstName") !=null ?request.getParameter("FirstName"):"";
我提供了以下解决方案,但 checkmarx 扫描仍然显示相同的错误。
if(!FirstName.equals("")){
FirstName=ESAPI.validator().getValidInput("requestParameter",FirstName,"HTTPParameterValue",2000,true);
}
我也使用过 getValidinteger() 方法,但两者似乎都没有解决问题。
这里是for循环--
ArrayList<String> userDetails = UserData.getDetails(FirstName);
for(int i=0;i<=userDetails.size();i++){
String rollno=userDetails.get(0)!=null?userDetails.get(0):"";
String subject=userDetails.get(1)!=null?userDetails.get(1):"";
}
解决方法
虽然 userDetails.size 似乎不是恶意用户可以控制或影响的东西(查看 UserData.getDetails 只会提供修复项目集),验证 userDetails.size 是否存在任何潜在风险,即大小可能会无意中增加到非常大的数字,从而导致拒绝服务,这仍然是一个好主意。
所以不是验证名字,而是检查数组列表的大小
static final int MAXSIZE = 2000;
int arraySize = userDetails.size();
if (arraySize > MAXSIZE) { // todo }
for(int i=0;arraySize;i<=i++){
String rollno=userDetails.get(0)!=null?userDetails.get(0):"";
String subject=userDetails.get(1)!=null?userDetails.get(1):"";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。