APP SandBox 란?
미국에서 아이의 안전을 위해 SandBox에서만 놀게 하여 위험을 최소화했다
라는 데서 유래한 보안 모델입니다.
애플이 애플리케이션의 디바이스에 로컬로 데이터베이스를 설정할 수 있도록 하는 동시에,
앱이 다른 애플리케이션에 간섭하지 않도록 격리하는 방식입니다.
iOS는 기본적으로 앱 하나 당 SandBox화 되어있습니다.
이는 곧 다른 앱의 정보에 접근이 불가능하다는 얘기인데,
쉽게 풀어서 적어보자면
현재 우리는 카카오톡에서 확인한 문서를 인스타그램, X 등에서 확인할 수 없고,
그 반대의 경우도 마찬가지일 겁니다.
이게 가능하다면 꽤나 머리가 지끈 해지겠죠?
또한 파일 정도도 가볍게 오가는데, 바이러스나 해커가 마음만 먹는다면 얼마든지
사용자의 데이터에 접근이 가능해질 겁니다.
이처럼 아찔한 상황을 미리 막아주는 시스템이 바로 SandBox라고 보시면 됩니다.
하지만 앞서 얘기한 듯이 이는 피해를 최소화 하기 위함이지
피해량을 아예 0으로 만들어주진 않습니다.
아무리 잘 짜여진 보안 시스템이라도
한 번만 뚫리게 되더라도 공격이 성공하게 됩니다.
이에 대비하여 SandBox는
개발자가 앱과 시스템이 어떤식으로 상호작용하게 할 건지 설정하도록합니다.
설정되면 시스템은 앱이 하고자하는 일을 끝내는데 필요한 권한만 부여하고 그이상은 부여하지 않습니다.
앱이 업무를 수행하는데 필요한 최소한의 권한으로 권한을 제한시켜
피해를 감소하고자 함이라 할 수 있습니다.
또한 하드웨어, 네트워크 연결, 앱 데이터, 유저 파일 중
하나를 사용하려면 의도를 반드시 명시하게 하도록 되어있습니다.
마지막으로 이 부분이 가장 보안에 있어 중요한 부분인 것 같은데,
바로 SandBox의 위치가 앱이 실행될 때마다 바뀐다는 것입니다.
정보 요청을 했을 때 애플이 요청자의 샌드박스의 위치를 알려주는 방식입니다.
앱 하나라도 실행하고자 하면 이 과정을 거쳐야만 하고,
위치가 바뀌는 방식이 알려져 있으면 바뀐 위치를 알기 너무 쉽겠죠?
그렇기 때문에 위치를 바뀌는 방식 역시 절대 우리는 알수가 없습니다.
SandBox의 구성(Container System)
1. Bundle Container
- 파일 , info.plist, Resource 등을 그룹화
- Compile Source 가 바이너리 형태의 실행 파일로 변환
- 라이브러리는 프레임워크로 그룹화
- 스토리보드, Xib, strings 등이 변환
2. Data Container ( = AppData 폴더 )
Documents
- Document, Library, tmp, System Data 외의 개발자가 직접 디렉토리나 파일을 추가할 수 없기에
- Document의 서브 디렉토리를 통해 관리, 사용자가 앱을 통해 생성한 문서, 파일, 음악 등의 컨텐츠 저장
- Document 디렉토리 자체는 삭제 불가
- 설정에 따라 사용자가 직접 파일 추가/삭제 가능
- Realm은 기본적으로 Document의 경로를 사용하지만 노출시, 중요한 정보 보관을 위해서 Library ApplicationSupport 폴더로 경로를 변경해 사용하기도 한다.
Library
- 사용자 데이터 파일과 임시 파일을 제외한 모든 파일 관리
- 사용자 노출을 피하고 앱의 기능이나 관리에 필요한 파일 저장
- Library 내의 Caches 폴더에는 앱의 스냅샷 등이 저장
'Swift' 카테고리의 다른 글
[iOS] About 싱글턴 패턴 (0) | 2024.06.29 |
---|---|
[iOS] About Router pattern (0) | 2024.06.27 |
[iOS] About Alamofire (0) | 2024.06.23 |
[iOS] About URLSession - 2 (0) | 2024.06.19 |
[iOS] About URLSession - 1 (0) | 2024.06.12 |