Sandbox, URL Scheme, App Group in iOS

장수빈·2025년 6월 16일

iOS

목록 보기
1/1

iOS에서 각 앱은 독립된 환경(샌드박스) 안에서 실행되며, 다른 앱이나 시스템 자원에 직접 접근하지
못하도록 격리

역할

  • 사용자 개인정보 보호
  • 시스템 안정성 확보
  • 악성 코드로 부터 보안 유지

앱마다 고유한 파일 시스템 디렉토리만 접근 가능하며, 시스템 파일이나 다른 앱에 데이터는 접근 할 수 없음


샌드박스로 인한 앱 개발 제약 사항

제약사항설명
다른 앱의 파일 접근 불가파일 공유, 메모리 접근 제한
시스템 API 사용 제한jailbreak 없이 특정 API 접근 불가
앱 간 직접적인 메모리 공유 불가앱 간 직접적인 통신 어려움
리소스 공유 제한공유 파일 저장, DB 접근 제한
외부 파일 접근 시 권한 필요예: 사진 접근은 Info.plist 권한 필요

URL Scheme을 이용한 앱 간 통신

  • URL Scheme은 앱 간 데이터를 전달하고나, 특정 앱을 실행시키는 수단
  • 마치 웹의 URL처럼 myapp://path?query=value 형식의 커스텀 스킴을 등록

사용 방법

  1. Info.plist에 스킴 등록
<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>myapp</string>
    </array>
  </dict>
</array>
  1. 다른 앱에서 호출
if let url = URL(string: "myapp://open?id=123") {
    UIApplication.shared.open(url)
}

등록된 앱이 설치되어 있으면 실행되고, URL 파라메터로 데이터 전달 가능

URL Scheme 사용시 보안 고려 사항

항목설명
검증 없는 실행 위험악의적 앱이 조작된 URL을 보낼 수 있음
인증 정보 노출 위험URL에 민감 정보(id, token 등) 담으면 노출 위험
미등록 스킴 호출앱이 설치되지 않았을 경우 대응 필요

보안 팁

  • URL 호출 시 입력 검증 및 필터링 필수
  • 민갑 정보는 절대 URL 파라미터로 전달하지 않기
  • canOpenURL(_:)로 사전 실행후 실행

App Group을 활용한 데이터 공유 방법

앱 그룹은 개발자 계정 하의 앱 또는 앱 확장(App Extension)간에 공유 컨테이너(container)를
생성하여 데이터를 공유할 수 있게 해주는 기능

설정 방법

  • App Group 활성화 (Xcode -> Capabilities -> App Group)
  • App Group ID 생성
  • UserDefault나 FileManager 사용
let sharedDefaults = UserDefaults(suiteName: "group.com.example.shared")
sharedDefaults?.set("Hello", forKey: "message")

데이터 종류, 크기

데이터 유형적합 여부이유
간단한 값 (String, Bool 등)✅ 매우 적합UserDefaults(suiteName:)로 공유
JSON, 설정 파일✅ 적합FileManager로 읽기/쓰기
대용량 파일 (영상, 이미지 등)⚠️ 제한적파일 I/O는 가능하나, 성능 및 저장소 용량 고려 필요. 임시 저장 용도로만 권장

앱 확장과 앱 그룹

  • App Extension은 호스트 앱의 기능을 확장하지만, 샌드박스가 분리되어 직접 데이터 접근이 불가
  • 이때 App Group을 이용해 데이터 공유
  • ex) iOS Widget, Share Extension, iMessage Extension 등은 App Group을 통해 메인앱과 데이터 공유

요약

기술 요소역할 / 목적제약 또는 고려사항
샌드박스앱 격리로 보안과 안정성 확보앱 간 직접 접근 불가
URL 스킴앱 실행 및 데이터 전달보안 검증 필수
App Group동일 개발자 앱/확장 간 파일 공유사전 설정 필요, 대용량 사용 주의
App Extension앱 기능 확장(위젯, 공유 등)App Group으로만 공유 가능
profile
iOS 공부 이모저모 낙서장

0개의 댓글