我正在使用Appscan源代码进行Java安全编码。它在我的应用程序中报告SQL注入。问题是我们在代码中动态生成查询,因此我无法使用预准备语句。相反,我需要我们Esapi.encoder().encodeForSql(new OracleCodec(), query)
。 AppScan不认为这可以缓解SQL注入问题。
final String s = "SELECT name FROM users WHERE id = " +
Esapi.encoder().encodeForSql(new OracleCodec(), userId);
statement = connection.prepareStatement(s);
此代码另外不适用于ESAPI.encoder()
如何解决此问题?
答案 0 :(得分:1)
你应该做的是
final String s = "SELECT name FROM users WHERE id = ?"
statement = connection.prepareStatement(s);
statement.setString(1, userId);