2017-03-13 4 views
1

私はJetty Webサーバーとサーブレットエンジンを使用してWebサーバーアプリケーションでHibernateを実行しています。 Hibernateは、hibernate.propertiesで初期化されます。初期化時には、次のログファイルに表示されます。Hibernateはログファイルにデータベースパスワードを表示します

Mar 13, 2017 6:58:56 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {5.2.7.Final} 
Mar 13, 2017 6:58:56 AM org.hibernate.cfg.Environment <clinit> 
INFO: HHH000205: Loaded properties from resource hibernate.properties: {hibernate.c3p0.timeout=500, javax.persistence.jdbc.user=sa, hibernate.c3p0.max_statements=50, hibernate.c3p0.max_size=20, hibernate.dialect=org.hibernate.dialect.H2Dialect, hibernate.c3p0.idle_test_period=2000, javax.persistence.jdbc.url=jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;MVCC=TRUE, hibernate.format_sql=true, javax.persistence.jdbc.driver=org.h2.Driver, hibernate.c3p0.min_size=5, hibernate.hbm2ddl.auto=validate, hibernate.bytecode.use_reflection_optimizer=false, hibernate.show_sql=true, javax.persistence.jdbc.password=sa} 

は、最後の行の末尾にjavax.persistence.jdbc.password=saに注意してください。セキュリティ上のリスクがあるため、データベースのパスワードをログファイルに表示したくありません。 C3P0接続プール・サービスは、例えば、より良性である:

Mar 13, 2017 6:58:56 AM org.hibernate.c3p0.internal.C3P0ConnectionProvider configure 
INFO: HHH10001001: Connection properties: {user=sa, password=****} 

にHibernateプロパティの完全な内容は、起動時にファイルのロギングを停止する方法はありますか?全体のログレベルを変更したくありません。

答えて

1

org.hibernate.cfg.Environment(行198)のHibernate 5.0.11のコードを見ると、Hibernateは既にhibernate.connection.passwordの値をマスクします(設定されている場合)。

ただし、値javax.persistence.jdbc.passwordを設定しているようです。 hibernate.connection.passwordを使用するように切り替えると、これが機能するはずです。

+1

私のテストで他のデータベース設定と同じjavax.persistenceプロパティを使用していることを除いて、あなたの提案はうまくいくはずです。それが起こると、私は複数の場所でこれらのプロパティを使用しているので、私はすでにそれらを自分自身でロードしていて、Hibernateをプログラム的に設定していました。私がファイル名をhibernate.propertiesとして保存し、Hibernateが自分の設定コードとは独立してファイル名を開いていたのは、私の見解です。プロパティファイルの名前を変更したところで、Hibernateはそれについて何も知りません。 –

関連する問題