Java IBM Appscan安全漏洞SQL注入
我有应用程序扫描,通过它我可以扫描我的项目,但在语句中Java IBM Appscan安全漏洞SQL注入,java,security,jdbc,Java,Security,Jdbc,我有应用程序扫描,通过它我可以扫描我的项目,但在语句中 preparedStatement = conn.prepareStatement(sql); 存在SQL.Injection漏洞,我正在使用esapi设置准备语句中的值,例如 preparedStatement.setString(1 , OracleEncoder.encode(code) ); OracleEncoder正在这样做 ESAPI.encoder().encodeForSQL( ORACLE_CODEC,pa
preparedStatement = conn.prepareStatement(sql);
存在SQL.Injection漏洞,我正在使用esapi设置准备语句中的值,例如
preparedStatement.setString(1 , OracleEncoder.encode(code) );
OracleEncoder正在这样做
ESAPI.encoder().encodeForSQL( ORACLE_CODEC,param);
知道如何修复此漏洞吗?您不需要将绑定参数编码到preparedStatement
// preparedStatement.setString(1 , OracleEncoder.encode(code) );
preparedStatement.setString(1 , code );
报告的有关部分说,
驱动程序将其发送到数据库时,会将其转换为SQL VARCHAR或LONGVARCHAR值(取决于参数相对于驱动程序对VARCHAR值的限制的大小)
假设您正在进行静态分析,appscan没有ESAPI的标记,您应该在appscan中为encodeForSQL方法创建SQLi验证程序标记。这样,下次扫描时,扫描引擎将获取新的标记,并了解通过esapi调用消除SQLi威胁。如果在代码中使用esapi库函数和预处理语句,则可以将此问题标记为非问题。 Prepared语句是避免SQL注入的缓解技术之一
preparedStatement = conn.prepareStatement(sql);
好的,我知道了,还有IBM应用程序扫描漏洞,因为它抱怨我写你的方式或mine@Haider你的方式根本行不通。至于IBM应用程序扫描,请与IBM联系。您可能想阅读有关边界的文章parameters@PaulBastide不知道存在(security.stackexchange…)