2017-09-22 10 views
0

좋아, 내가 응용 프로그램에서 사용하는 데이터를 저장하기 위해 데이터베이스 (SQLLite/RealmDb 등)를 사용하는 휴대 전화에 응용 프로그램을 가지고 있다고 가정하면 해커가 아닌 악의적 인 엔터티가 내 뿌리가없는 전화를 확보하고 어떻게 든 액세스 할 수 있습니다.휴대폰간에 모바일 SQL 데이터베이스를 이동할 수 있습니까?

엔터티가 데이터베이스를 사용하기 위해 코드를 디 컴파일하고 자신의 응용 프로그램 (또는 데이터가 필요한 부분)을 만들 수 있으면 데이터베이스를 내 장치에서 다른 장치 (또는 내 다른 응용 프로그램)로 이동할 수 있습니까? 장치, 그것은 정말로 중요하지 않습니다) 다음 데이터베이스에 액세스/사용 (더 열심히 데이터를 암호화 또는하지 않음)?

예를 들어 암호화 된 데이터를 가져 와서 나머지 API로 바로 보내면 유효한 응답을 얻을 수 있습니다.

모바일 데이터베이스에 "변조 연결"이있어서 다른 장치/앱 샌드 박스에서 사용할 수 없습니까? 아마도 데이터베이스와 OS의 차이가있을 것입니다.

Desclaimer : 내 모든 응용 프로그램 및 API의이 인증서 서버에 고정 그래서 가장 좋은 방법은 보안 요구 하지 해요 JWT 토큰 및 서버 측 유효성 검사를 사용하고 HTTPS의 상단에. 그 질문을 좀 더 보안에 대한 경영진의 판매 필요성과 같이 "나를 끝낼 수 있습니까?"라고 대답하려고합니다.

+0

루트 액세스 권한을 얻고 데이터를 보관할 수 있다면 ** data/data/해당 _package_name/databases **로 이동하여 파일을 복사 한 다음 sqlite 관리자를 사용하여 데이터베이스를보고 조작 할 수 있습니다. 그것은 SQLite 용입니다. 자주 SQLite 데이터베이스를 Windows에 복사하고 SQLite Manager (브라우저 확장)를 사용하고 때로는 데이터베이스를 조작하고 프로세스를 역순으로 바꾸어 장치의 데이터베이스를 변경합니다 (IOS에 대해 잘 모름). – MikeT

답변

0

Realm과 SQLite는 단일 파일로 백업됩니다. 따라서 해커가 파일 시스템에 액세스 할 수 있습니다. 파일을 복사하여 원하는 파일을 읽고 수정할 수 있습니다.

미리 채워진 데이터베이스와 함께 앱이 제공되는 경우 앱을 디 컴파일하고 파일을 복사 할 수 있습니다.

장치에서 누출 된 데이터가 염려되는 경우 로컬 데이터베이스를 암호화하여이를 방지 할 수 있습니다. Realm은 Android와 iOS 모두에 대해 in-built encryption이고 SQLCipher을 포함하면 SQLite가 지원합니다.

암호화 키가 장치에 저장되어 있지 않지만 로컬 로그인에서 파생되거나 서버에서 전송 된 경우 데이터 유출 걱정없이 로컬 데이터베이스를 사용하는 것이 100 % 안전해야합니다.

+0

SQLCipher에만 문제가 있습니다. – MikeT

+0

데이터베이스의 암호화 키를 임의로 생성하여 android keystore/ios 키 체인에 저장하는 것을 고려하지 않습니까? – Sturla