Library 디렉토리

Tags
Directory
요약
앱의 캐시 데이터, 네트워킹 구성을 포함한 중요 파일 저장.

Library 디렉토리

Data/Application/Library
  • 앱의 캐시 데이터, 네트워킹 구성을 포함한 중요 파일 저장.
  • Caches 디렉토리 제외하고는 iTunes, iCloud에 백업도 됨.
  • 주로 서브디렉토리인 Application SupportCaches를 이용하지만
    • 커스텀 디렉토리도 사용 가능
  • Preference, Cookies, Saved Application Sate, WebKit 등
    • 필요할 때 시스템에서 자동 생성

Library/Application Support

  • 파일 받기, 저장을 위한 디렉토리가 아님.
  • 앱이 사용할 추가적인 데이터 저장을 위한 디렉토리
    • Ex) 추가로 구매한 다운로드 가능 콘텐츠, 설정파일, 최고점수 등
    • 실행중인 앱 보조
  • CoreData의 기본 저장 경로
  • 디폴트로 iTunes, iCloud 백업되나,
    • NSURLIsExcludedFromBackupKey 속성 설정 시 백업 X

Library/Caches

  • 앱의 동작 속도 / 데이터 절약 등을 위해 사용하는 공간
  • 유지해야 할 중요한 데이터 X
    • iTunes, iCloud에 백업되지 않음.
  • 애플에서 Caches 폴더 관리 책임이 앱에게 있다고 밝힌 바 있으나,
    • 실제로 OS도 Caches와 그 하위 디렉토리 조작 가능.
    • 저장공간 부족 시, 시스템이 알아서 삭제 가능.
  • 가끔 웹 캐시 콘텐츠를 하위 디렉토리에 저장하기도
    • Ex) Caches/com.mycompany.myapp/…
    • HTTPS에서 받은 정보 꽤 오랫동안 보존 가능하므로 민감정보 누출 주의

Library/SplashBoard/Snapshots/

  • 책, 블로그 등 Library/Caches/Snapshots 경로라 알려져 있지만
  • 현재(ios 13기준)는 SplashBoard 서브 디렉토리 내에 저장.
  • 앱이 백그라운드로 진입 할 때, OS가 자동으로 스냅샷 저장.
  • Foreground로 돌릴 때 목록에 snapshot 이미지로 보여짐
  • 화면을 그대로 찍어서 남기는 경우 민감 정보 누출 가능.

주의사항

  • 스냅샷 남기는 것에 대해 별도 처리를 하지 않았다면 중요 정보 노출
    • 신용카드 번호 등
  • 스냅샷 경로에서 이미지 형태로 추출 가능.
notion image

Library/Cookies

  • URL 로딩 시스템에 의해 설정된 쿠키 저장.
  • NSURLRequest를 만들 때 아래 방법 중 하나로 쿠키 설정.
    • 기본 시스템 쿠키 정책
    • 사용자가 명시한 방법
  • OS X와 다르게 iOS는 앱 사이에 쿠키를 서로 공유하지 않음.
  • 해당 앱만 사용하는 쿠키 저장.

Library/Preferences

  • 앱의 설정 정보 저장
  • 앱 프리퍼런스를 저장하나 앱이 직접 파일에 쓸 수 없음.
    • UserDefaults, Setting.bundle, CFPreferences API 이용.
  • 하지만 API는 앱의 프리퍼런스 파일을 평문으로 저장.
    • 사용자의 민감 정보, 권한 등 저장하면 안됨!
  • Preferences 디렉토리의 plist 파일 반드시 조사.
    • 때때로 사용자 이름, 비밀번호, API access key, 사용자가 변경 가능한 보안 통제 등 발견.
    • notion image

      Library/Saved Application State

    • 사용자는 허용된 텍스트 필드에 사용자가 입력한 문자, 활성화된 기능 등을 앱이 기억하기를 바람.
    • 그러나 실제로는 앱이 백그라운드로 전환하는 동안 종료됨.
    • Sate Preservation API를 사용해 UI를 상태정보 오브젝트로 저장.
    • 조심스럽지 않게 앱 상태를 저장한다면, 데이터 유출 가능.