我有一个使用用户输入的params
条件的条件查询,例如:
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文档以及其他一些文章,但它只谈到了避免SQL注入的HQL方法。
条件是否在后台使用HQL? 或者更直接地说,这种类型的标准查询对SQL注入是否安全?
我对安全问题很新。
答案 0 :(得分:5)
是的,您示例中的条件语句可以免于注入。
Criteria语句只是Hibernate的Criteria API的一个方便的构建器,因此您使用它构造的任何查询都具有所有相同的行为。