在命名查询的setParameter中附加值是否会增加SQL注入的可能性?

时间:2018-06-26 06:47:18

标签: java sql sonarqube sql-injection

我有一个查询字符串,例如-

queryStr.append(" ").append(relation.getJoins()[i].getChildSql()).append(" = :join").append(i);

我正在使用setParameter设置:join 的值,但Sonar抱怨有可能进行SQL注入。不允许在setParameter中附加值,如下所示-

 for (int i = 0; i < parentKeyValues.length; i++) {
                    query.setParameter("join" + i, parentKeyValues[i]);
                }

1 个答案:

答案 0 :(得分:1)

SQL注入可以在以下位置进行:

.append(relation.getJoins()[i].getChildSql())

仅当getChildSql()可以返回任何类型的用户提供的数据时。

.append(" = :join").append(i)

仅当i不是整数,并且可能包含用户提供的数据时。

我认为setParameter()不会被利用。