Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate 5.2加密配置属性_Java_Hibernate_Encryption - Fatal编程技术网

Java Hibernate 5.2加密配置属性

Java Hibernate 5.2加密配置属性,java,hibernate,encryption,Java,Hibernate,Encryption,在我基于Hibernate 5.2.11构建的应用程序中,有许多Hibernate配置文件,其中包含用户名、密码和连接url。 我想加密这些数据 我的配置文件如下所示: <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">oracle.j

在我基于Hibernate 5.2.11构建的应用程序中,有许多Hibernate配置文件,其中包含用户名、密码和连接url。 我想加密这些数据

我的配置文件如下所示:

<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>

oracle.jdbc.driver.OracleDriver
jdbc:oracle:localhos
用户名
passowrd123
2.
org.hibernate.dial.Oracle12cDialect
org.hibernate.cache.internal.NoCacheProvider
假的

有什么建议吗?

使用属性占位符,然后将数据库配置添加到服务器上的属性文件中:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>file:${configDir}/database.properties</value>
  </property>
</bean>
然后,在启动java应用程序时,添加一个系统参数以定义configDir位置,例如:

 .... -DconfigDir=/opt/config

请参见示例使用属性占位符,然后将数据库配置添加到服务器上的属性文件:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="location">
    <value>file:${configDir}/database.properties</value>
  </property>
</bean>
然后,在启动java应用程序时,添加一个系统参数以定义configDir位置,例如:

 .... -DconfigDir=/opt/config

<>参见示例

一般-加密/隐藏驻留在客户端侧(工作站/移动/…)的任何东西,您可以考虑更像混淆或编码。

理论上,您可以通过编程方式设置Hibernate属性(请参阅)从加密文件读取数据


问题是-你把加密密钥放在哪里?在某些地方,密钥必须提供给应用程序。

一般-加密/隐藏驻留在客户端侧(工作站/移动/…)的任何东西,您可以认为更像混淆或编码。 理论上,您可以通过编程方式设置Hibernate属性(请参阅)从加密文件读取数据


问题是-你把加密密钥放在哪里?密钥必须在应用程序的某个地方可用。

这看起来不像加密。现在days security不希望在属性文件中使用纯文本形式的密码。@408它们在服务器上是安全的,只有应用程序才能看到它们。如果对它们进行加密,如何避免将密钥保存在属性文件中?您可以使用密码vault,但仍需要属性文件中的vault密钥。保护它们比加密更可靠。我也有同样的安全问题。答案是,这使得黑客必须付出更多的努力才能找到密钥文件或密钥库。我正在使用java,有时使用.net。但我想,使用java脚本、PHP等脚本语言会让黑客更容易找到密钥,因为他们所要做的就是将源代码与grep进行梳理,然后将密钥的存储位置和访问方式归档。使用符合要求的语言,必须有人知道如何使用反编译器。@pitchblack408您完全没有抓住要点,在我的解决方案中,源代码中没有属性,只有占位符。服务器上的实际属性,并在运行时访问。我了解您的解决方案,但本文的标题是Hibernate 5.2 encrypt configuration。。。我不知道他为什么接受你的答案,因为这与加密无关。在您的解决方案中,没有关于加密或解密的内容。不过,它提供了很多信息,因为我总是从构建中排除属性文件,并更改类路径以从服务器上的其他地方获取该文件。现在days security不希望在属性文件中使用纯文本形式的密码。@408它们在服务器上是安全的,只有应用程序才能看到它们。如果对它们进行加密,如何避免将密钥保存在属性文件中?您可以使用密码vault,但仍需要属性文件中的vault密钥。保护它们比加密更可靠。我也有同样的安全问题。答案是,这使得黑客必须付出更多的努力才能找到密钥文件或密钥库。我正在使用java,有时使用.net。但我想,使用java脚本、PHP等脚本语言会让黑客更容易找到密钥,因为他们所要做的就是将源代码与grep进行梳理,然后将密钥的存储位置和访问方式归档。使用符合要求的语言,必须有人知道如何使用反编译器。@pitchblack408您完全没有抓住要点,在我的解决方案中,源代码中没有属性,只有占位符。服务器上的实际属性,并在运行时访问。我了解您的解决方案,但本文的标题是Hibernate 5.2 encrypt configuration。。。我不知道他为什么接受你的答案,因为这与加密无关。在您的解决方案中,没有关于加密或解密的内容。不过,它提供了信息,因为我总是从构建中排除属性文件,并更改类路径以从服务器上的其他位置获取该文件。安全部门说,它们应该隐藏在服务器上。至于以编程方式设置hibernate.connection.password,我遇到了一些问题。似乎它仍在尝试使用xml文件中的一个。@pitchblack408这正是我的答案所做的???@EssexBoy,这是我想要做的。安全部门说它们应该隐藏在服务器上。至于以编程方式设置hibernate.connection.password,我遇到了一些问题。似乎它仍在尝试使用xml文件中的一个。@pitchblack408这正是我的答案所做的???@EssexBoy,这是我想要做的。