2011-11-18 159 views
2

我有一個使用一些params由用戶輸入的條件查詢,如:防止SQL注入查詢

def query = MyTable.createCriteria() 
def myQueryResult = query.list() { 
    if (params.minToInvestMin) 
       ge('minimalToInvest', params.minToInvestMin.toBigDecimal()) 
    if (params.minToInvestMax) 
       le('minimalToInvest', params.minToInvestMax.toBigDecimal()) 
} 

我看了Grails的文檔關於這個問題,以及其他一些文章,但它只談到HQL方式來避免SQL注入。

標準是否在後臺使用HQL? 或者更直接地說,這種類型的標準查詢對SQL注入安全嗎?

我對安全問題相當陌生。

回答

5

是的,您示例中的標準語句是安全的注入。

Criteria語句只是Hibernate的Criteria API的一個方便的構建器,因此您使用它構造的任何查詢都會得到所有相同的行爲。