2011-11-18 100 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的一个方便的构建器,因此您使用它构造的任何查询都会得到所有相同的行为。