我有一个查询字符串,例如 -
queryStr.append(" ").append(relation.getJoins()[i].getChildSql()).append(" = :join").append(i);
我正在使用 setParameter 设置 :join 的值,但 Sonar 提示 SQL 注入(inject)的可能性。是否不允许在 setParameter 中附加值,如下所示 -
for (int i = 0; i < parentKeyValues.length; i++) {
query.setParameter("join" + i, parentKeyValues[i]);
}
最佳答案
SQL 注入(inject)可能发生在:
.append(relation.getJoins()[i].getChildSql())
仅当 getChildSql()
可以返回任何类型的用户提供的数据时。
.append(" = :join").append(i)
仅当 i
不是整数并且可能包含用户提供的数据时。
我认为 setParameter()
不会被利用。
关于java - 在命名查询的 setParameter 中附加值是否会增加 SQL 注入(inject)的可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51036478/