2017-11-16 3 views
0

私のアプリケーションでは、Hibernate 5.2.11をビルドする際に、ユーザ名、パスワード、接続URLを持つ多くのハイバネート設定ファイルがあります。 私はそのデータを暗号化したいと思います。Hibernate 5.2で暗号化された設定のプロパティ

私の設定ファイルは、このようなものです:

<hibernate-configuration> 

<session-factory> 

    <!-- Database connection settings --> 
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 

    <property name="connection.url">jdbc:oracle:localhos</property> 
    <property name="connection.username">username</property> 
    <property name="connection.password">passowrd123</property> 

    <!-- JDBC connection pool (use the built-in) --> 
    <property name="connection.pool_size">2</property> 

    <!-- SQL dialect --> 
    <property name="dialect">org.hibernate.dialect.Oracle12cDialect</property> 
    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> 
    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">false</property> 

</session-factory> 

</hibernate-configuration> 

任意の提案?

答えて

1

[プロパティにデータベースの設定を追加し、プロパティのプレースホルダを使用しますが、サーバー上のファイル:次に

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="location"> 
    <value>file:${configDir}/database.properties</value> 
    </property> 
</bean> 

<property name="connection.url">${url}</property> 
<property name="connection.username">${username}</property> 
<property name="connection.password">${passowrd}</property> 

次にサーバー上に安全である、あなたのdatabase.propertiesは

になります
url=jdbc:oracle:localhost 
usuername=username 
password=passowrd123 

Javaアプリケーションを起動するときに、システムパラメータを追加してt彼には、例えば、場所をCONFIGDIR:

.... -DconfigDir=/opt/config 

は例here

0

は、一般的に参照してください - あなたはより多くの難読化やエンコーディングのように考えることができますクライアント側(/モバイル/ ..ワークステーション)上に存在するどのような何かを隠して/暗号化を。

理論的には、Hibernateプロパティをプログラムで暗号化ファイルからデータを読み込むように設定することができます(Setting properties programmatically in Hibernateを参照)。

問題は - あなたの暗号化キーはどこに置かれますか?とにかくどこかの場所でキーを利用できるようにする必要があります。

関連する問題