CODEDRAGON ㆍSecurity/SecureCoding
7.하드코드된 비밀번호
http://codedragon.tistory.com/5304
CASE
데이터베이스 연결을 위한 패스워드를 소스코드 내부에 상수 형태로 하드코딩 하는 경우, 접속 정보가 그대로 노출될 수 있어 위험합니다.
안전하지 않은 코드-Java |
public class MemberDAO { private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@192.168.0.3:1521:ORCL"; private static final String USER = "SCOTT"; // DB ID; private static final String PASS = "SCOTT"; // DB PW; Member_List mList
public MemberDAO() { }
public MemberDAO(Member_List mList) { this.mList = mList }
public Connection getConn() {
Connection con = null; try { Class.forName(DRIVER); con = DriverManager.getConnection(URL, USER, PASS); } catch (Exception e) { log.error(e.getMessage()); } return con;
} // …… } |
패스워드는 안전한 암호화 방식으로 암호화하여 별도의 분리된 공간(파일)에 저장해야 하며, 암호화된 패스워드를 사용하기 위해서는 복호화 과정을 거쳐야 합니다.
안전한 코드-Java |
public class MemberDAO { private static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; private static final String URL = "jdbc:oracle:thin:@192.168.0.3:1521:ORCL"; private static final String USER = "SCOTT"; // DB ID Member_List mList;
// …… public Connection getConn() { Connection con = null; try { Class.forName(DRIVER); String PASS = props.getProperty("EncryptedPswd"); byte[] decryptedPswd = cipher.doFinal(PASS.getBytes()); PASS = new String(decryptedPswd); con = DriverManager.getConnection(URL, USER, PASS); } catch (Exception e) { log.error(e.getMessage()); } return con; } } |
'Security > SecureCoding' 카테고리의 다른 글
연방 정보 처리 표준(FIPS) 간행물 140-2 (FIPS PUB 140-2) (0) | 2017.05.16 |
---|---|
SR1‐2 XML조회 및 결과 검증 사고 사례 - XML 해킹공격, PC정보 유출 이렇게 이루어져! (0) | 2017.05.10 |
7.하드코드된 비밀번호 - 취약한 코드, 보안대책, 소스코드 예제 (0) | 2017.04.28 |
SR1‐1 DBMS 조회 및 결과 검증 사고사례 - “뽐뿌 해킹사고, 허술한 웹 취약점 관리가 발단” (0) | 2017.04.22 |
개인정보 위험도 분석 기준 및 해설서 (0) | 2017.04.16 |