티스토리 뷰

 

관련 글

application.yml의 필드를 environment variable로 넘기는 법.

https://krksap.tistory.com/2183

 

SpringBoot Intellij에서 Environment Variable을 application.yml에 넣기

application.yml에 민감 정보가 들어가는 경우 실수로 git에 올라가는 경우 해킹을 당할 수 있습니다. 아래와 같이 db접속 정보가 모두 노출이 되어 있습니다. application.yml spring: # 배포 시에 환경변수

krksap.tistory.com

 

다음 코드는 DB에 연결 되었는지를 테스트 하는 코드 입니다. 하지만 보안적으로 치명적인 문제가 있습니다. db url과 계정, password가 바로 노출 된다는 것입니다.

public class UseEnv {
    public void check() throws SQLException, ClassNotFoundException {
        
        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost/test-db1",
                "root", "12345678");

        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("show databases");
        rs = st.getResultSet();
        while (rs.next()) {
            String str = rs.getString(1);
            System.out.println(str);
        }
    }
}

 

치명적인 부분은 이 부분입니다. 초보자 분들은 혹은 경력자분들도 귀찮아서 그냥 쓰다가 git에 올라가버리면 바로 해킹당하고 비트코인을 요구하는 내용이 db에 남겨져 있을것입니다.

 

소스코드에 db접속정보, password를 넣는일은 한번이라도 하지 마시고 결코 습관을 들이지 마시기 바랍니다. 언젠가 큰일이 날 수 있습니다.

.getConnection("jdbc:mysql://localhost/test-db1",

git에 위 소스코드를 올리고 조금만 기다리시면 DB가 해킹당하고 다음 내용이 table에 남아있습니다. 더미 데이터 10만 row정도가 들어 있었는데 0.26을 달라고 합니다. 한 500만원정도 되죠?

 

해결 방법

environment variable을 쓰시면 됩니다. 다음과 같이 getenv()를 쓰면 됩니다.

import static java.lang.System.getenv;

public class UseEnv {
    public void check() throws SQLException, ClassNotFoundException {
        Map<String, String> env = getenv();
        String dbHost = env.get("DB_HOST");
        String dbUser = env.get("DB_HOST");
        String dbPassword = env.get("DB_HOST");

        Class.forName("com.mysql.cj.jdbc.Driver");
        Connection con = DriverManager.getConnection(dbHost, dbUser, dbPassword);

        Statement st = con.createStatement();
        ResultSet rs = st.executeQuery("show databases");
        rs = st.getResultSet();
        while (rs.next()) {
            String str = rs.getString(1);
            System.out.println(str);
        }
    }
}

 

앞에서 선언한 값들은 Intellij에서 env로 전달 할 수 있습니다.

 

Environment Variable 을 로컬에서 jvm으로 전달하는 방법

Edit - Configurations로 갑니다.

 

Environment variables에서 오른쪽에 목록 버튼을 누릅니다.

 

+버튼을 눌러서 3개를 추가 합니다. DB_HOST, DB_USER, DB_PASSWORD

접속 정보를 입력하면 됩니다.

end.

 

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함