我有一个查询字符串,例如-
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]);
}
答案 0 :(得分:1)
SQL注入可以在以下位置进行:
.append(relation.getJoins()[i].getChildSql())
仅当getChildSql()
可以返回任何类型的用户提供的数据时。
.append(" = :join").append(i)
仅当i
不是整数,并且可能包含用户提供的数据时。
我认为setParameter()
不会被利用。