2014-10-10 186 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

相關問題