Secure Coding Guide | 하드 코드된 비밀번호


정의

소스 코드내에 비밀번호가 하드코딩되어 있어 소스코드 유출시 노출될 우려가 있거나 주기적 변경 등과 같은 수정(관리자 변경 등)이 용이하지 않는 보안약점이다.

영향

패스워드 노출된다.

발생 및 조치 방법

프로그램 코드 내부에 하드 코드된 패스워드가 포함된 경우 발생한다.

안전하지 않은 Java 코드의 예

public Connection DBConnect(String url, String id) {
    try {
        String url = props.getProperty("url");
        String id = props.getProperty("id");
        conn = DriverManager.getConnection(url, id, "tiger");
    } catch (SQLException e) {
        System.err.println("...");
    }
    return conn;
}

안전한 Java 코드의 예

public Connection DBConnect(String url, String id) {
    try {
        String url = props.getProperty("url");
        String id = props.getProperty("id");
        String pwd = props.getProperty("passwd");
    ...
    byte[] decrypted_pwd = cipher.doFinal(pwd.getBytes());
    pwd = new String(decrypted_pwd);
    conn = DriverManager.getConnection(url, id, pwd);
    } catch (SQLException e) {
        System.err.println("...");
    }
    return conn;
}