我正在使用 Struts2 框架和 Hibernate,我正在增强一个我没有开始的系统,我增强了一些系统功能并在生产环境中实施。但是当他们使用 Acunetix 进行扫描时,在登录模块的某个地方,系统检测到了一些威胁(警报),其中警报显示:
警报:SQL注入
严重性:高
描述:此脚本可能容易受到 SQL 注入攻击。
建议:您的脚本应该过滤用户输入中的元字符。有关修复此漏洞的详细信息,请查看详细信息。
然后,我检查了导致该警报的脚本。旧开发人员使用 Hibernate 创建查询。
List<UserBean> users = session.createQuery("from UserBean where username =?")
.setParameter(0,username)
.list();
我的问题是:
-使用Hibernate的这个查询是否无法避免SQL注入?
-应该使用.setString
而不是.setParameter
来更具体地避免SQL注入吗?
还是以上都不是?
感谢您的时间。