防止 Grails 标准查询中的 SQL 注入
我有一个标准查询,它使用用户输入的一些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 方法注射。
criteria 是否在后台使用 HQL? 或者更直接地说,这种类型的条件查询对 SQL 注入安全吗?
我对安全问题相当陌生。
I have a criteria query that uses some params
entered by the user, such as:
def query = MyTable.createCriteria()
def myQueryResult = query.list() {
if (params.minToInvestMin)
ge('minimalToInvest', params.minToInvestMin.toBigDecimal())
if (params.minToInvestMax)
le('minimalToInvest', params.minToInvestMax.toBigDecimal())
}
I have read the Grails doc on the subject as well as some other articles, but it only speaks about HQL way to avoid SQL injections.
Does criteria uses HQL in the backscene?
Or more directly, is this type of criteria query safe to SQL injections?
I am fairly new to security matters.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,您示例中的条件语句可以安全地注入。
Criteria 语句只是 Hibernate 的 Criteria API 的便捷构建器,因此,您用它构造的任何查询都具有相同的行为。
Yes, the criteria statements in your example are safe from injection.
Criteria statements are just a convenient builder for Hibernate's Criteria API, so any query you construct with it is afforded all of the same behavior.