我有一个搜索框,我正在提交像java等这样的文本,并在此基础上通过GORM找到rhe数据,就像给定的代码一样:
def searchQueryInSession = params?.searchQuery
def searchSkill = MetaSkills.findAllByName(searchQueryInSession)
是否可以在这里进行SQL注入?如果是,那么我们如何在所描述的场景中防止这种行为?
答案是:否
GORM 将使用类似于以下内容的绑定参数创建查询:
select m.* from meta_skills m where name = ?
因此,它不会更改您的程序并造成任何伤害。
需要注意的是,在执行 HQL 时需要小心。 可以使用 HQL 编写注入攻击,例如
def vulnerable() {
def books = Book.find("from Book as b where b.title ='" + params.title + "'")
}
或
def vulnerable() {
def books = Book.find("from Book as b where b.title ='${params.title}'")
}
示例取自:圣杯文档 - 安全性