在命名查询的 setParameter 中追加值会增加 SQL 注入的可能性吗?



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

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

我正在使用 setParameter 来设置:join的值,但 Sonar 抱怨 SQL 注入的可能性。是否不允许在设置参数中附加值,如下所示 -

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

SQL注入可以在:

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

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

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

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

我不认为setParameter()可以被利用。

最新更新