回答

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