728x90
반응형

org.apache.commons.dbcp.BasicDataSource 사용해서 DataSource 설정

 

사용자 정보와 비밀번호가 xml에 설정되어 노출 되는 경우가 있어

보안상 암호화 할 필요가 있다.

 

이경우 org.apache.commons.dbcp.BasicDataSource 상속받아 클래스를 만들어서 사용 하면 된다.

 

1. Spring에서 DataSource 설정

 

 <bean id="dataSource" destroy-method="close"
  class="net.jlancer.db.SecureBasicDataSource">
  <property name="driverClassName"
   value="oracle.jdbc.driver.OracleDriver" />
  <property name="url"
   value="jdbc:oracle:thin:@localhost:1521:oradb" />
  <property name="username" value="암호화된아이디" />   <!-- 암호화 사용자아이디를 넣은다. -->
  <property name="password" value="암호화된비밀번호" /> <!-- 암호화 비밀번호를 넣는다. -->
 </bean> 

 

2. 상속받아 만든 클래스

 

package net.jlancer.db;

import org.apache.commons.dbcp.BasicDataSource;

import com.aurasoft.crypto.PasswordEncrypt;

 

public class SecureBasicDataSource extends BasicDataSource {

   

    //사용자아이디 암호화 해제 설정

    public void setUsername(String username){

         //암호화/해제 모듈은 각자 맞는 것을 사용 하면 됩니다.
         super.setUsername(PasswordEncrypt.Decrypt(username)); 
    }
   

    //비밀번호 암호화 해제 설정
    public void setPassword(String password) {

       //암호화/해제 모듈은 각자 맞는 것을 사용 하면 됩니다.
        super.setPassword(PasswordEncrypt.Decrypt(password));
    }
   

}

 

<!-- 암복호화 예제 -->

import org.apache.commons.dbcp.BasicDataSource;

import org.jasypt.util.text.BasicTextEncryptor;

 

public class SecureBasicDataSource extends BasicDataSource {

 

@Override

Public void setUsername(String username){

BasicTextEncryptor BTE = new BasicTextEncryptor();

BTE.setPassword("dddd");

super.setUsername(BTE.decrypt(username));

}

 

@Override

Public void setPassword(String password){

BasicTextEncryptor BTE = new BasicTextEncryptor();

BTE.setPassword("dddd");

super.setUsername(BTE.decrypt(password));

}

728x90
반응형

'보안개발' 카테고리의 다른 글

파일조작 웹해킹  (0) 2014.07.14
자바스크립트 웹해킹  (0) 2014.07.14
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,