如果我使用参数值作为名称,我是否容易受到sql注入?
for(String tag : choixalerte.selectedNomExestingtags)
where += " ach.NOM_ACHTEUR LIKE :" + tag + " or ao.OBJET LIKE :" + tag + " or lot.INTITULE LIKE :" + tag + "";
// ...
Query native_query = entityManager.createNativeQuery(...);
if(choixalerte.selectedNomExestingtags != null)
for(String tag : choixalerte.selectedNomExestingtags)
native_query.setParameter(tag, "%" + tag + "%");
答案 0 :(得分:3)
是。您不应该在查询中连接字符串。
如果您不想遭受攻击,您可以选择以下方式:
1)不要连接,使用"?"代替
2)清理参数,可以删除所有无效字符。删除#或 - 以及任何其他类型的sql命令。
请注意,您需要始终谨慎使用此代码,因为如果出现新的攻击类型,则需要编辑清理代码。