回答

9

是的,它的确如此。

Criteria API以及HQL或JPQL中的查询参数都会转义参数并且不会执行恶意SQL。

仅当您将参数连接到查询中时才会暴露该漏洞。然后,任何恶意SQL都会成为您查询的一部分。

编辑该OWASP功能SQL injection prevention cheatsheet。使用标准查询相当于防御选项1:使用准备好的语句。

+0

结论是什么。标准API是否完全保护我的网站免受SQL注入? – 2013-02-25 12:04:10

+1

@яєηנιтн.я对不起,听起来不确定。是的,它确实。 – kostja 2013-02-25 12:08:27

+3

@яєηנιтн.я实际上保护你免受SQL注入的是Statements,用于Criteria,HQL甚至纯JDBC,如果你正确使用它的话。结论是:不要连接字符串来创建您的查询。使用API​​。 – 2013-02-25 12:27:01