我正在尝试使用普通的旧 JDBC 运行查询。 如何修复此 checkmarx 错误?
queryMap.properties
qryKey9908=select coulm1, coulm2... from table join table2 on..... //No where conduction
qryKey9909=select coulm1, coulm2... from table1 join table2 on..... where concat(colmx,colmy)=?
myDao....
String sqlStr=queryMap.get("qryKey9908");
if(null!=inputObj)
sqlStr==queryMap.get("qryKey9909");
try{
Connection con = DbUtil.getConnection();
Preparedstatement ptst = con.preparestatement(sqlStr);
//I did try with ESAPI same error
Preparedstatement ptst = con.preparestatement(ESAPI.encoder().encodeForSql(new OracleCodec()sqlStr).(replace("''","'"));
if(null!=inputObj){
ptst.setString(index++,inputObj.getUnikQryStr();//this returns concated values.
}
Resulset rs = ptst.executeQuery();
while(rs.next()){
...
...
}
} catch(Exce..e){}
Checkmarx错误:
应用程序“getAcntXXX”(服务类方法)在生成的输出中嵌入不受信任的数据,其中 acntList 位于第 XXX 行 src\AcntService.java 不受信任的数据被直接嵌入到 输出适当的清理或编码,使攻击者能够 将恶意代码注入输出。攻击者将能够 通过将恶意数据保存在数据存储中来更改返回的网页 提前时间。然后从中读取攻击者修改的数据 通过 getXXX (Dao) 方法与 rs 在第 XXX 行的数据库 源\\AcntDao.java。不受信任的数据然后流经代码 直接到输出网页,没有消毒。
如何修复这个 checkmarx 错误?
提前致谢。