Sandbox와 Installed APP(2)

yong·2025년 1월 6일

Swift

목록 보기
5/7

지난번에 ios개발을 하던 도중 ios는 aos와 다르게 installed app에 대한 정보를 가져올수 없어 이에대해 알아보고자 저 스스로 복습하기 위해 sandbox에 대한 개념을 공부하였습니다.

이번엔 왜 aos는 되고 IOS는 installed app에 대한 정보를 가져오지 못하는지에 대해 알아보겠습니다.

Android는 다른 설치된 앱 정보를 가져올 수 있는데, 왜 iOS는 안될까?

일단 결론부터 말씀드리자면 iOS는 강력한 샌드박스 정책을 적용하여 앱 간의 데이터 접근을 엄격하게 제한하기 때문입니다.

즉, iOS에서는 앱이 다른 앱의 정보를 수집하는 것을 원천적으로 차단하고, Android는 제한적이지만 가능한 방식으로 허용하고 있습니다.

1. Android vs iOS의 앱 정보 접근 정책 차이

비교 항목AndroidiOS
앱 목록 조회 가능 여부✅ 가능 (제한적)❌ 불가능
방법PackageManager (QUERY_ALL_PACKAGES 필요)원천적으로 차단
샌드박스 강도중간 (제한적 허용)매우 강함 (완전 차단)
예외 허용일부 기업용 앱 또는 권한 부여 시 가능기업 관리용(MDM)에서만 가능

Android는 제한적으로 앱 목록을 가져올 수 있지만, iOS는 시스템적으로 차단!

2. Android에서 설치된 앱 목록을 가져오는 방법

Android에서는 PackageManager를 사용하여 설치된 앱 목록을 가져올 수 있습니다.
하지만, Android 11(API 30) 이상부터는 제한이 강화되어 특정 앱만 조회 가능합니다.

✅ Android 코드 예제 (설치된 앱 목록 가져오기)

val pm = packageManager
val packages = pm.getInstalledPackages(0)
for (packageInfo in packages) {
    Log.d("InstalledApp", "패키지 이름: ${packageInfo.packageName}")
}

👉 Android 11 이상에서는 QUERY_ALL_PACKAGES 권한 필요!


<manifest>
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
</manifest>

✅ 이렇게 하면 설치된 앱 목록을 가져올 수 있음.

그러나, iOS에서는 이런 방식이 불가능!

3. iOS에서 설치된 앱 목록을 가져올 수 없는 이유

iOS는 강력한 샌드박스 정책을 적용하여, 앱이 다른 앱 정보를 조회하는 것을 원천적으로 차단합니다.
즉, 자신의 앱 데이터 외에는 접근할 수 없음.

Apple의 주요 보안 정책

  • 앱은 자신만의 샌드박스 안에서 실행됨
  • 다른 앱의 데이터를 확인할 방법 없음
  • 설치된 앱 목록을 가져오는 API 자체가 없음
  • 백그라운드에서 다른 앱을 감지할 수도 없음

즉, iOS에서는 시스템적으로 앱 목록 조회 기능이 제공되지 않음.

4. Android는 가능한데, iOS는 왜 막았을까?

1) 보안 및 개인정보 보호 강화 (Privacy)

iOS는 사용자의 개인 정보를 보호하기 위해 앱 목록 접근을 차단.
설치된 앱 정보를 보면 사용자의 관심사, 금융 앱, SNS 앱 여부 등을 추측할 수 있음 → 개인정보 침해 위험!

2) 악성 앱 감지 차단

Android에서는 특정 앱을 감지하여 경쟁사 앱을 차단하거나 광고 타겟팅에 사용할 수 있음.
예: 어떤 앱이 "카카오톡이 설치되어 있는지 확인하고 특정 기능을 활성화"할 수도 있음.
Apple은 이런 방식의 사용자 데이터 수집을 금지.

3) 보안 위협 감소

악성 앱이 다른 앱을 감지하여 공격할 가능성 차단.
예: "설치된 은행 앱을 감지하고, 피싱 공격을 시도"하는 악성 앱 차단.

즉, iOS는 철저한 보안 정책을 유지하기 위해 앱 간 접근을 원천적으로 차단.

5. 예외적으로 iOS에서 앱 목록을 조회할 수 있는 경우

일반적인 방법으로는 불가능하지만, 일부 예외적인 경우 가능.

1) MDM (Mobile Device Management, 기업 관리용 앱)

기업에서 관리하는 기기(예: 회사 직원용 iPhone)에서는 MDM을 통해 설치된 앱 목록을 가져올 수 있음.
DeviceCheck API나 Configuration Profile을 이용.

2) Jailbreak (탈옥)

iOS를 탈옥하면 제한이 풀려서 설치된 앱 목록을 가져올 수 있음.
하지만, 보안상 위험하고 App Store에서 금지됨.

일반적인 앱 개발에서는 iOS에서 앱 목록을 가져오는 것이 불가능!

최종 결론: Android는 앱 정보를 가져올 수 있고, iOS는 못하는 이유

질문AndroidiOS
설치된 앱 목록 조회 가능?✅ 가능 (PackageManager 이용)❌ 불가능 (샌드박스 보호)
어떻게 막혀있나?Android 11부터 제한 강화원천적으로 불가능
개인정보 보호 수준제한적 보호강력한 보호
악성 앱 탐지 가능?가능 (다른 앱 감지 가능)불가능 (샌드박스로 차단)
예외적인 경우MDM 관리 기기, 루팅 시 가능MDM 사용 시 일부 가능, 탈옥 필요

✅ Android는 보안이 강화되었지만, 여전히 앱 목록을 가져올 수 있음 (그래도 googleplaystore에 올리기엔 빡셈..)
❌ iOS는 아예 앱 간 데이터 접근을 차단하여 불가능

즉, Apple은 개인정보 보호와 보안을 더 중요하게 여겨서 앱 간 접근을 원천적으로 차단한 것이라 거의 가져오지 못한다고 보면 됩니다 ;_;

profile
배우고 경험한거 꾸준히 복습

0개의 댓글