Skip to content

Latest commit

 

History

History
114 lines (75 loc) · 4.37 KB

File metadata and controls

114 lines (75 loc) · 4.37 KB

App 공통 기능: Local Storage

📦 로컬 스토리지 개요

앱 내부에서 사용자 설정, 로그인 정보, 캐시 등을 저장할 때 로컬 스토리지를 사용함.

네트워크 없이도 기기 내부에 데이터 저장/조회 가능. 성능 및 UX 개선에 기여.

로컬 스토리지에는 다양한 형태가 존재하며, 저장하려는 데이터의 형태와 민감도, 필요한 구조화 수준에 따라 적절한 방식을 선택해야 함.
크게 다음과 같은 분류로 나눌 수 있다:

  • Key-Value 저장소 : 간단한 설정, 토글 등의 값 저장에 적합
  • 보안 저장소 : 토큰이나 인증키처럼 암호화가 필요한 데이터 저장
  • 관계형 DB : 테이블 구조 기반의 복잡한 데이터 관리
  • 대체 DB : 빠른 성능을 제공하는 경량 저장소, 일부는 암호화 지원
  • 최신 대안 : SwiftData처럼 최근 플랫폼에 맞게 진화한 새로운 저장 방식

각 OS는 자체적으로 이러한 기능을 제공하며, 외부 라이브러리를 활용한 대체 기술도 널리 사용됨.


🗃️ 로컬 스토리지의 종류

📱 iOS

분류 기술 설명
Key-Value 저장소 UserDefaults 설정값, 플래그 등 단순 데이터 저장
보안 저장소 Keychain 토큰, 패스워드 등 민감 정보 저장. 시스템 레벨 암호화
관계형 DB CoreData Apple 공식 ORM. SQLite 기반
대체 DB Realm 가볍고 빠른 로컬 DB. 암호화 지원
최신 대안 SwiftData WWDC23 공개. Swift-native ORM 기반 구조화된 데이터 저장소



🤖 Android

분류 기술 설명
Key-Value 저장소 SharedPreferences 설정값, 플래그 등 단순 저장
보안 저장소 EncryptedSharedPreferences / Android Keystore 민감 정보 보관용. 암호화 지원
관계형 DB Room (SQLite 기반) Android 공식 ORM
대체 DB Realm, ObjectBox, DataStore 고성능 로컬 저장소 옵션



🛠️ Flutter에서는 어떻게 할까?

Flutter는 다양한 로컬 저장소 플러그인을 통해 iOS/Android의 기능을 추상화하여 제공한다.
간단한 설정 저장부터 보안 저장, 관계형 DB, 경량 DB까지 상황에 따라 유연하게 선택할 수 있다.

분류 기술 설명
Key-Value 저장소 shared_preferences 간단한 설정, 토글 값 등을 저장. 비보안
보안 저장소 flutter_secure_storage Keychain/Keystore 기반. 암호화된 민감정보 저장
관계형 DB sqflite SQLite 기반. 구조화된 데이터 저장에 적합
대체 DB Hive, ObjectBox, Isar 경량 DB. 빠른 성능, 일부는 암호화 지원



⚙️ 로컬 스토리지 기본 구조 (CRUD)

로컬 스토리지는 저장, 조회, 수정, 삭제 기능을 제공함.
각 플랫폼의 API나 플러그인으로 CRUD 기능을 구현함.



🛡️ 민감 정보 vs 일반 정보

앱 데이터는 민감 정보와 일반 정보로 구분됨.

구분 예시 저장소 권장
일반 정보 앱 설정, 최근 본 항목, 테마 UserDefaults / SharedPreferences
민감 정보 로그인 토큰, 비밀번호, 인증 키 Keychain / Android Keystore

민감 정보는 탈옥/루팅 시 노출 위험이 크므로 암호화된 저장소에 보관해야 함.



🔐 보안 저장의 필요성

앱은 기본적으로 샌드박스로 격리되어 다른 앱 접근 불가.
하지만 탈옥/디버깅 시 내부 파일 접근 가능성 존재.

실제로 많은  기업들은 민감정보의 노출 취약점을 점검하기위해 모의 해킹을 수행한다.   

따라서 다음을 준수해야 함:

  • 민감 정보는 암호화 저장 (Keychain, Keystore 활용)
  • 보안 필요 없는 설정 값만 일반 스토리지에 저장
  • 앱 삭제 시 자동 제거되는 저장소인지 확인



✅ 정리

  • 로컬 스토리지는 앱 내부 데이터 저장의 핵심 기능
  • 플랫폼별 다양한 방식 존재, 보안 수준에 따라 선택 필요
  • 민감 정보는 별도의 보안 저장소에 암호화해 보관
  • CRUD 기능을 고려해 저장소 API를 추상화해 사용함



HISTORY

  • 260710: 초안작성