繁体   English   中英

Java / Hibernate Criteria查询API是否可以防止注入?

[英]Does the Java/Hibernate Criteria Query API Protect Against Injection?

这可能是一个愚蠢的问题,但我没有在文档中看到任何明确说明标准查询被参数化或在引擎盖下注入保护的内容。

换句话说,是否像下面这样的谓词直接容易受到注入攻击? 如果是这样,我该如何解决? 查看文档我没有看到任何参数化选项或任何类似的选项。

criteriaBuilder.like(
    root.get("prop"),
    "%"+userInput+"%"
)

是的,hibernate使用参数化查询作为标准*

确认这一点的最简单方法是激活sql日志记录(将org.hibernate.SQL类设置为DEBUG),你将看到hibernate生成的查询(并获取参数值,激活日志类别:org.hibernate。键入TRACE级别)。

*在标准中,您可以手动编写sql部分(使用Restrictions.sqlRestriction("...") )。 如果您正在编写易于在其中进行sql注入的sql,那么您的条件查询也将受其影响。

是的,它确实。

使用Criteria API与使用参数化PreparedStatements相同。 您唯一需要谨慎的是不要连接查询字符串,或者是否真的需要非常小心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM