Hibernate是实现GORM域类的基础技术,当提交数据库时会自动转义数据,所以这个没什么问题。
然而编写使用未检查的请求参数的脏动态HQL代码,仍然会有问题可能存在。
比如如下的这种做法就很容易受HQL注入攻击:def vulnerable = {
def books = Book.find("from Book as b where b.title ='" + params.title + "'")
}
千万别这样做。假如你想传递参数,用命名参数和定位参数代替:def safe = {
def books = Book.find("from Book as b where b.title =?", [params.title])
}