2014-10-10 106 views
1

加密的密码我有春天JPA配置如下JPA可以使用数据库连接

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" > 
    <property name="driverClassName" value="${jdbc.driverClassName}" /> 
    <property name="url" value="${jdbc.url}" /> 
    <property name="username" value="${jdbc.username}" /> 
    <property name="password" value="${jdbc.password}" /> 
</bean> 

<bean id="emf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" > 
    <property name="dataSource" ref="dataSource" /> 
    <property name="jpaVendorAdapter" ref="vendorAdaptor" />   
    <property name="packagesToScan" value="pk.training.model"/> 
    <property name="jpaProperties"> 
     <props> 
      ... 
      <prop key="hibernate.show_sql">true</prop>    
     </props>   
    </property> 
</bean> 

我有属性文件中,我有密码一样

jdbc.password=abc123 

当我的应用程序运行时,Spring上下文加载并连接到数据库。精细。现在我想问一下,假设我以加密形式提供密码,如

jdbc.password=$53ytg#@! 

现在JPA如何连接到数据库?有没有JPA自己处理加密密码的任何属性,或者我必须自己做一些事情?

谢谢。

+0

可能重复[如何在apache BasicDataSource中使用加密密码?](http://stackoverflow.com/questions/3423135/how-to-use-encrypted-password-in-apache-basicdatasource) – lexicore 2014-10-10 18:26:51

+0

当然可以加密密码,但您将在哪里存储解密密钥? – holmis83 2014-10-13 07:38:18

回答

0

你必须这样做你自己的。安全方面,它并没有增加太多,但。攻击者可以

  1. 坐落在春天有个断点,等到创建bean并从现场读取密码
  2. 看看你的代码,找出你存储密钥来解密数据库密码,提取物并使用您的代码对其进行解密
  3. 由于大多数数据库驱动程序在默认情况下不会对您的应用程序和数据库之间交换的数据进行加密,因此您的密码(以及所有数据)将作为纯文本通过网络发送(除非数据库与应用程序位于同一台服务器上)。

所以在大多数情况下,要做的事是把数据库用户名和密码在服务器的磁盘上的文件,并确保只有经过授权的人可以访问此文件(加上你的应用程序可以读取它)。加密密码只能增加obscurity, no real security

相关问题