티스토리 뷰
Spring Boot 로 웹 개발을 하다 보면 *.properties, *.yml 등과 같은 별도의 설정파일을 두게 됩니다. 주로 외부 서버 연결정보 , DB 연결정보 등과 같은 정적 정보가 들어가게 됩니다.
그중에는 DB 접속이 가능한 계정, 패스워드처럼 민감한 정보가 있을 수 있습니다.
그래서 몇몇 회사 같은 경우에는 아래와 같이 프로퍼티파일에 연결정보와 같은 주요정보가 발견되면 소스 보안 진단시 문제가 발생합니다.
example.properties
...
db.user = scott
db.password = titger
...
그럴경우 실제 패스워드나 아이디에 대해서 암호화를 처리를 해야 되는데 Spring Boot와 연동해서 쉽게 사용할 수 있는것이 Jasypt 라이브러리 입니다. (물론 Spring Boot 외 사용도 가능합니다. Maven dependency 정보가 다를수 있습니다.)
오픈소스구이구요 사용법은 간단합니다. 요즘에 많이 사용하고 있는 Spring Boot 와 함께 사용한는 방법을 알아보겠습니다.
Jaspyt (Java Simplified Encryption)
1.Maven Dependency 추가
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 | ... <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.16</version> </dependency> ... | cs |
2.대상문자 암호화
JasyptTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package info.m2sj import org.jasypt.encryption.pbe.StandardPBEStringEncryptor; public class JasyptTest { public static void main(String[] args) { StandardPBEStringEncryptor jasypt = new StandardPBEStringEncryptor(); jasypt.setPassword("m2sj"); //암호화 키(password) jasypt.setAlgorithm("PBEWithMD5AndDES"); String encryptedText = jasypt.encrypt("tiger"); //암호화 String plainText = jasypt.decrypt(encryptedText); //복호화 System.out.println("encryptedText: " + encryptedText); //암호화된 값 System.out.println("plainText: " + plainText); //복호화된 값 } } | cs |
OUTPUT:
encryptedText: GSgl23iN4fwfAtMkC3un0Q==
plainText: tiger
3.복호화 설정
application.properties
...
db.user = scott
db.password = ENC(GSgl23iN4fwfAtMkC3un0Q==)
...
4.Vm 옵션설정
-Djasypt.encryptor.password=m2sj
실제 운영서버에서는 위와같이 was 구동시에 파라미터로 전달하시면 되고요(보안 때문에) 로컬이나,개발환경에서는 개발편의에 따라 application.properties 파일에 암복화키를 직접 설정하셔도 됩니다.
application.properties
jasypt.encryptor.password=m2sj #패스워드 직접 설정
더욱 자세한 내용은 아래의 Jasypt 사이트를 방문 하시면 됩니다.
'Web Development' 카테고리의 다른 글
[Spring] Constructor Dependency Injection (생성자 의존성 주입) (0) | 2018.03.05 |
---|---|
[DB] MySQL 에서 ROWNUM , 시퀀스 사용하기 (0) | 2018.01.30 |
[Tool] 무료 온라인 이미지 편집 Vectr (0) | 2018.01.25 |
[Git] 윈도우에서 gitignore 파일 만들기 (0) | 2018.01.23 |
[정규식] 정규식을 이용해서 명령어 공백 구분자로 분리하기 (값중에 공백 포함시) (0) | 2018.01.22 |
- Total
- Today
- Yesterday