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));
}
'보안개발' 카테고리의 다른 글
파일조작 웹해킹 (0) | 2014.07.14 |
---|---|
자바스크립트 웹해킹 (0) | 2014.07.14 |