안드로이드 DB MSSQL의 사용법 질문

조회수 2142회

안녕하세요. 안드로이드 개발을 이제 막 시작한 초보입니다.

네이티브앱을 개발하려하는데

이미 생성되어 있는 MSSQL DB를 사용하려 합니다.

간단하게 Java로 커넥션은 했는데 코드가 디바이스 안에 들어간다고 생각하니 난독화를 한다고 해도

보안이 염려되어 다른 방법이 없는지 질문드립니다.

아래는 현재 구현한 코드 형식입니다.

Connection.class

public Connection CONN() {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    Connection conn = null;
    String ConnURL = null;

    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        ConnURL = "jdbc:jtds:sqlserver://" + ip + "/" + db+ ";user=" + un + ";password=" + password + ";";

        conn = DriverManager.getConnection(ConnURL);

    }catch (SQLException se)
    {
        Log.e("error here 1 : ", se.getMessage());
    }
    return conn;
}

MainActivity.java 에 추가

    protected String doInBackground(String... params) {
        if(userid.trim().equals("")|| password.trim().equals(""))
            message = "Please enter User Id and Password";
        else
        {
            try {
                Connection con = connectionClass.CONN();
                if (con == null) {
                    message = "Error in connection with SQL server";
                } else {
                    String mac = Utils.getMACAddress(null);
                    String ip = Utils.getIPAddress(true);
                    String devicename = getDeviceName();
                    String query = "셀렉트 쿼리문'";
                    Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(query);

                    if(rs.next())
                    {
                        message = "Login Successfull " + userid;
                        isSuccess=true;
                    }
                    else
                    {
                        message = "Invalid Credentials";
                        isSuccess = false;
                    }

                }
            }
            catch (Exception ex)
            {
                isSuccess = false;
                message = "Exceptions";
            }
        }
        return message;
    }
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 보안이 염려되신다면 개인적으로는 별도의 웹서버를 두고 하는게 좋다고 생각합니다. 그런데 안드로이드에서 jdbc 를 통해 직접 데이터베이스 서버에 접근이 가능하던가요? 알 수 없는 사용자 2018.9.18 10:53
  • 별도의 웹서버라 하시면 소켓을 말씀하시는 건가요? 그리고 안드로이드에서 라이브러리에 jtds-1.2.7.jar 를 추가하여 직접 접근이 가능했습니다. 알 수 없는 사용자 2018.9.18 11:22
  • 별도의 API 서버를 두고 서버에서 데이터베이스 접근하고 해당 서버 API 를 통해 데이터를 주고 받는 방식이 좋지 않을까 생각하네요. 안드로이드에서 직접 데이터베이스 서버에 접근하는 것은 권장하는 방식이 아닙니다. 아무래도 우려하고 계시는 보안 이슈가 가장 크지 않을까 싶네요 알 수 없는 사용자 2018.9.18 11:39
  • 답변 감사합니다. API 서버부터 구축해야 겠군요. 직접접근을 하다보니 보안보다도 모바일이 네트웍이 워낙 불안정하다 보니 커넥션을 유지 할 수 없는 이슈가 너무 크더군요. ㅠㅠ 알 수 없는 사용자 2018.9.18 12:04

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)