[iOS] Local Data Storage

hack_98·2023년 1월 27일
0

iOS

목록 보기
5/6

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 실습

  1. KeyChain_dumper-master.zip 를 다운 및 단말기에 삽입
  2. SSH 접속하여 압축을 풀고, 해당 디렉토리로 이동
  3. “setup_on_iOS.sh” 파일의 권한을 변경하고 해당 파일을 설치함
  4. #keychain_dumper 명령어로 키체인과 관련된 정보들을 출력
    - 해당 정보들에서 중요 정보/민감 정보가 있는지 확인
    - 키 체인에 사용자의 입력값이 저장될 수 도 있음
    https://github.com/ptoomey3/Keychain-Dumper

2) keyChain.db 위치

  1. /private/var/Keychains 디렉토리에서 keychain.db를 추출
  2. 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. 대응방안

  • 자격증명, 개인정보 , 인증정보 등 디바이스 내 저장하지 않아야함
  • 저장해야 할 경우, 반드시 암호화하여 저장
profile
Go Big or Go Home

0개의 댓글