在Hibernate中检测注入

时间:2011-10-04 13:57:10

标签: hibernate sql-injection prepared-statement

我正在使用Hibernate,我希望防止注入Hibernate预处理语句。 有一种直截了当的方法吗? 问候, 哈米德


让我重新解释一下我的问题。 :-)我的代码中有很多查询,其形式为:session.createQuery(...)。有两种查询。那些有setParameters的人,以及那些没有setParameters的人。后者的形式是:从XYZ中选择*,其中username ='“+ username +”'和password ='“+ password +”'“这不适合我。现在,我的问题是如何自动找到第二个表格我有任何解决方案吗?

2 个答案:

答案 0 :(得分:0)

如果您将日志记录到DEBUG,您可以看到Hibernate正在做什么。它输出的陈述表明它正在对准备好的陈述做什么,包括何时重用它们。

答案 1 :(得分:0)

您需要记录您的日志记录(请参阅@Aaron Sheffey)并启用show sql。这是要设置的属性。

hibernate.show_sql=true

有关您可以执行的日志记录的详细信息,请参阅此处:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html#configuration-logging

以下log4j属性也会将Hibernate语句放入自己的文件中。

log4j.logger.org.hibernate=DEBUG, org.hibernate

log4j.appender.org.hibernate=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.org.hibernate.DatePattern=-yyyy-MM-dd-HH
log4j.appender.org.hibernate.File=${catalina.base}/logs/hibernate.log
log4j.appender.org.hibernate.layout=org.apache.log4j.PatternLayout 
log4j.appender.org.hibernate.layout.ConversionPattern=%d{dd MMM yyyy HH\:mm\:ss,SSS} [%t] %-5p %c %x - %m%n