gpt4 book ai didi

java - Hibernate 的 createCriteria() 是否清理输入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:19 27 4
gpt4 key购买 nike

今天遇到一些使用 Hibernate 执行查询的代码。查询使用从表单提交的值。这让我很好奇这种代码是否“净化”了它的输入。

public List<School> search(String query) {
Session session = this.getCurrentSession();
query = "%" + query + "%";
Criteria criteria = session.createCriteria(getPersistentClass());
criteria.createAlias("country", "a");
Criterion nameCriterion = Restrictions.ilike("name", query);
Criterion cityCriterion = Restrictions.ilike("city", query);
Criterion countryCriterion = Restrictions.ilike("a.name", query);
Criterion criterion = Restrictions.or(Restrictions.or(nameCriterion, cityCriterion), countryCriterion);
criteria.add(criterion);
return criteria.list();
}

这样安全吗?

最佳答案

Hibernate 标准查询在 SQL 注入(inject)方面是非常安全的,因为它们在执行任何提取时将字符串作为参数传递。甚至,除非您通过字符串文字构建查询,否则 Hql 是非常安全的。

有关更多详细信息,您应该查看通过打开 hibernate sql 日志记录在数据库级别触发的查询。

关于java - Hibernate 的 createCriteria() 是否清理输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15841894/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com