1. Local Data Storage
- 임시 데이터와 영구 데이터를 저장하기 위해 로컬 시스템과 상호작용
- 임시/영구 형식으로 안전하지 않은 형태로 저장하면 위험함
- 내부에 저장하기 위한 다양한 형식 존재(XML&Plist , SQLite, Keychain, Core data)
1. Plist
- 애플리케이션 데이터 및 설정 정보를 저장하는데 사용되는 XML 파일
- 저장된 정보는 암호화가 되지 않아 중요한 정보를 저장하면 안됨
- info.plist 는 버전 정보, 실행 가능한 바이너리 이름, 지원되는 ios 정보 저장
2. Keychain
- iOS 키체인은 암호화된 데이터 베이스
- 키체인은 API를 통해 접속 가능하며, SQLite 데이터베이스로 구현됨
- 모든 앱에서 하나의 키체인만 사용가능
- KeyChain_dumper 도구를 사용하면 디바이스의 키체인 내용을 덤프 및 복호화
1) KeyChain_dumper 실습
- KeyChain_dumper-master.zip 를 다운 및 단말기에 삽입
- SSH 접속하여 압축을 풀고, 해당 디렉토리로 이동
- “setup_on_iOS.sh” 파일의 권한을 변경하고 해당 파일을 설치함
- #keychain_dumper 명령어로 키체인과 관련된 정보들을 출력
- 해당 정보들에서 중요 정보/민감 정보가 있는지 확인
- 키 체인에 사용자의 입력값이 저장될 수 도 있음
https://github.com/ptoomey3/Keychain-Dumper
2) keyChain.db 위치
- /private/var/Keychains 디렉토리에서 keychain.db를 추출
- SQLite 를 사용하여 keychain.db를 열어 데이터 확인해보자
💡 Keychain은 안전한가 ?
- keychain dump를 통해 값이 복호화되어 노출되는 것을 확인할 수 있음.
- 따라서 keychain에 저장되는 민감 정보 및 중요 정보까지도 암호화하여 저장해야함
3. Core Data
- core data는 애플리케이션 모델 객체를 관리 (MVC 모델) 하기 위한 프레임 워크
- core data는 SQLite 영구 저장소를 사용 가능하지만. 프레임워크 자체는 데이터베이스 아님
- sqlite 데이터베이스 확인 가능
4. Webkit Caching
- 웹 페이지를 로드하기 위해 UIWEBView 를 사용하는 애플리케이션은 응답시간을 단축시키기 위해 Caching을 사용
- UIWEBView (앱에 웹 컨텐츠를 포함하는 뷰)
- Cache.db 데이터 베이스 확인 가능
5. ETC
1) Realm
- ios 나 안드로이드에서 사용하는 작은 데이터베이스
- 데이터베이스 확인하기 위해서 Realm Studio 설치 필요
- default.realm 데이터 베이스 확인 가능
2) Couchbase Lite
- Couchbase Lite는 경량화, 임베디드 문서 기반. 동기화할 수 있는 데이터 베이스 엔진
- db.splite3 데이터 베이스 확인 가능
3) YapDatabase
- YapDatabase는 SQLite 를 기반으로 구축된 collection/key/value 저장소
6. 대응방안
- 자격증명, 개인정보 , 인증정보 등 디바이스 내 저장하지 않아야함
- 저장해야 할 경우, 반드시 암호화하여 저장