-
왜 서버 거쳐서 DB연결?기타 2022. 12. 28. 00:49
---
---
앱에서도 DB커넥션을 할 수가 있어
일단 기본적으로 핸드폰 안에서 안드로이드가 제공하는 SQLite라는 DB가 있고 그런식으로 DB가 연결될 수 있다
그 의미는 네트웍으로 저 뒷단의 DB를 잡을 수가 있다
근데 이렇게 안해. 왜?
WAS에 자바어플리케이션 올릴 수 있고
node.js구성
php
jsp..
이렇게 서버소스가 있고 얘네가 응답을 해주는 이유는
DB connection을 폰에서 다이렉트로 했을 때 문제점은 두개정도
앱소스는 오픈된다고 봐야된다. 난독화라는 기술도 있고 어느정도 보안이 되지만 소스가 열렸을 때 DB Connection하는 서버의 모든 정보 IP, user password 이런게 있어야 DB connection 이란걸 할 수가 있는데 모든 정보가 앱소스 안에 있어야 한다. 자원으로 따로 빼든 소스상에 입력하든 어쨌든 다 있어야 한다
불가능하다는게 아니라 노출이 돼서 좋을 게 없다
IP로 했을 때 문제 DB를 구성한다고 했을 때 클라우드라든지.. 반드시 IP를 할당받는데, IP가 어쩌다보면 바뀔 수도 있는 염두를 해야해
그럼 접속이 안돼
서버를 두면 서버 주소의 IP를 할당받지 않고 DNS주소로 받으면 된다
그럼 DNS에 의해 IP바뀐걸 가져오게 된다
DB를 DNS세팅하면 되지 않아? 그런 경우는 제가 보질 못했어요
원래 DB주소를 꽁꽁 싸매고 프라이빗존에 넣어서 외부통신이 안될정도로 막는데, 외부 IP노출시키고 DNS까지 연결해서 DB를 접속시키는건 완전한 보안상 노출
내 데이터가 어디든 오픈돼도 되는 데이터예요 라면 그럴 수 있겠지만
DB가 다운될 수도 있고 잘못될 수도 있잖아 노출시키면
그래서 중개 역할을 하는 애가 DB와 연결한다
여기 소스안에 IP가 있거나 user password가 있다고 해도 서버가 해킹당하지 않는 이상 소스들은 클라이언트로 내려오지 않는다. 그나마 안전
---
댓글1
영상으로 설명해주신 것이 맞습니다. 1. DB 커넥션 정보는 app client에 담고있으면 안되죠. 난독화가 되었다고 해도 생각보다 디컴파일러 성능이 좋습니다. 어떻게든 DB 커넥션 정보가 보일 수 밖에 없습니다. 이는 DB서버에 직접 공격을 유발할 수 있는 취약점입니다. 2. 구글 클라우드 인스턴스를 재시작하면 IP 주소가 생각보다 자주 바뀌더라구요. 그래서 app은 domain을 요청하게 만들고, 도메인 A 레코드를 클라우드 인스턴스 IP로 설정해주는 것이 커플링을 낮출 수 있지 않을까 생각해봅니다. 3. 영상에서는 app만 말씀해주셨지만, 생각보다 실제로 개발할 때 간과하는 것들이기 때문에 주의해야 합니다.