java - Hibernate 和 SQL 注入(inject)

标签 java hibernate sql-injection

我看过一些讨论通过命名参数防止 SQL 注入(inject)的主题,但是像这样的 hibernate 语句怎么样

currentSession().update(object);

currentSession().save(object)?

这些安全吗?或者总是使用像

这样的命名参数更安全

currentSession().createQuery("update Object set field=:field where id=:id").setParameter("field", field).setParameter("id", id).executeUpdate()?

最佳答案

它们是安全的,Hibernate 对实体 CRUD 语句使用绑定(bind)变量。为每个实体缓存这些语句,以避免每次需要时都创建它们,并且在执行它们时只提供绑定(bind)变量值。

您可以 enable SQL logging检查生成的 SQL。

关于java - Hibernate 和 SQL 注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42625452/

相关文章:

java - JPA 中的事务同步与事务关联

java - Hibernate 将数据保存到数据库时出现的问题

hibernate - 在 Hibernate 中防止 SQL 注入(inject)

java - 使用 PHP 管理服务器

java - 使用 Tuckey 的 UrlRewriteRule

java - Kotlin Arraylist 与 Java Arraylist 的类型不匹配

java - Oracle 查询到 JPA 查询转换

python - Python中准备好的语句和参数化查询之间的混淆

java - 如何在不使用准备好的语句的情况下清理 SQL

java - Spring Boot Embedded Kafka无法连接