Resultset 中存储的跨站点脚本 (XSS) 攻击

问题描述 投票:0回答:0

我正在尝试使用普通的旧 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 错误?

提前致谢。

java jdbc checkmarx
© www.soinside.com 2019 - 2024. All rights reserved.