Hibernate Criteria Api 是否完全防止 SQL 注入攻击?

14
我正在使用Hibernate来保护我的网站免受SQL注入攻击。
我听说Hibernate Criteria API比HQL更强大。Hibernate Criteria API能够完全防止SQL注入吗?
1个回答

19
是的,它可以。
Criteria API以及HQL或JPQL中的查询参数都会转义参数,并且不会执行恶意SQL。只有在将参数简单连接到查询中时才会暴露漏洞。然后,任何恶意SQL都将成为您查询的一部分。
编辑:OWASP提供了一个 SQL注入预防清单。使用标准查询相当于防御选项1:使用预处理语句。

结论是什么?标准API是否完全保护我的网站免受SQL注入攻击? - ѕтƒ
1
@яєηנιтн.я 对不起听起来不明确。是的,它可以。 - kostja
3
实际上保护您免受SQL注入攻击的是与Criteria、HQL甚至纯JDBC一起使用的“语句”,如果正确使用它们。结论是:不要连接字符串以创建查询,请使用API。 - Caesar Ralf
kostja,Ralf Hoppen:感谢您宝贵的评论。 - ѕтƒ
似乎 HQL 容易受到 HQL 注入攻击,这与 SQL 注入一样不安全。 - White_King
只要HQL查询使用绑定参数,它就不会有漏洞。链接的文章没有明确说明,但弱点在于字符串拼接。已经有一些利用方式,可以实现特定的SQL注入攻击,例如https://snyk.io/vuln/SNYK-JAVA-ORGHIBERNATE-1041788,但总体来说,您是安全的。 - kostja

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接