Песак за апликације у мобилном развоју — шта је то, механизам и принцип рада

Аутор: IT Sectr Објављено: 2026-05-18 Време читања: 8 мин

Песак за апликације (App Sandbox) — механизам изолације који ограничава приступ апликације систему датотека, подацима других апликација и системским ресурсима оперативног система. Свака апликација ради у сопственом изолованом окружењу са минималним привилегијама, захтевајући приступ додатним могућностима кроз дозволе. Према Apple Security Documentation (2025), Sandbox је фундаментални елемент заштите података на мобилним платформама. App Sandbox спречава неовлашћени приступ корисничким подацима чак и када је појединачна апликација компромитована.

Главно

  • App Sandbox — механизам изолације апликација који ограничава приступ систему датотека, процесима и подацима других апликација на нивоу оперативног система.
  • Принцип рада — свака апликација добија сопствени директоријум са ограниченим правима и покреће се са минималним привилегијама кроз обавезну контролу приступа (MAC).
  • iOS — користи строгу изолацију на нивоу кернела: свака апликација ради у сопственом цхроот-сличном окружењу са јединственим UID-ом.
  • Android — примењује изолацију кроз SELinux и UID раздвајање, свака апликација се покреће као одвојени Linux корисник са сопственим процесом и подацима.
  • Изузеци — приступ заједничким ресурсима (контакти, фотографије, геолокација) могућ је само кроз системске АПИ-је са изричитом сагласношћу корисника.

Шта је App Sandbox?

Песак за апликације (App Sandbox) — архитектонски безбедносни механизам који изолује сваку апликацију у сопствено извршно окружење са ограниченим приступом системским ресурсима. Термин потиче из концепта „песка“ за децу — безбедног простора у коме дете може да се игра без приступа опасним предметима. Аналогно томе, апликација ради у ограниченом окружењу, без приступа подацима других апликација или критичним системским компонентама.

Основни циљ Sandbox-а је имплементација принципа минималних привилегија: свака апликација добија само она права која су неопходна за обављање декларисаних функција. Чак и ако нападач пронађе рањивост у апликацији, песак му не дозвољава приступ подацима других апликација, fotografijama, контактима или системским датотекама. Штета је ограничена на оквире једне апликације.

Мобилни оперативни системи су увели пескове раније од десктопних. iOS користи Sandbox од изласка прве верзије SDK-а (2008), Android — од верзије 1.0 (2008), али са појачањем у Android 4.3 (2013) кроз SELinux. Десктоп системи сустижу: macOS је увео Sandbox 2012. године, Windows — изоловане UWP апликације у Windows 8.

Како функционише изолација у песку?

Изолација у песку се постиже комбинацијом неколико механизама на различитим нивоима оперативног система. На нивоу система датотека свакој апликацији се додељује сопствени заштићени директоријум коме само она има пун приступ. На нивоу процеса користи се јединствени идентификатор корисника (UID) за сваку апликацију. На нивоу кернела примењује се обавезна контрола приступа (MAC) кроз SELinux или сличне механизме.

Изолација система датотека

Свака апликација добија сопствени корени директоријум на систему датотека уређаја. У iOS-у је то директоријум /var/mobile/Containers/Data/Application/{UUID}, у Android-у — /data/data/{package_name}. Апликација може да чита и пише датотеке само унутар овог директоријума. Приступ било којим датотекама изван овог директоријума се блокира на нивоу кернела оперативног система.

Систем такође обезбеђује посебне заједничке директоријуме са ограниченим приступом. У iOS-у су то директоријум Documents за корисничке податке, Library за подешавања и Caches за привремене датотеке. У Android-у — интерна меморија (getFilesDir) и екстерна меморија (getExternalFilesDir), чији приступ не захтева додатне дозволе.

Изолација процеса и UID

У Android-у се свака апликација покреће као засебан Linux процес са јединственим UID-ом (User ID). UID се додељује приликом инсталације апликације и остаје непромењен током целог животног циклуса. Процеси са различитим UID-овима су изоловани једни од других на нивоу кернела — не могу приступити меморији или датотекама других процеса. Сличан механизам ради у iOS-у кроз XNU кернел и његов систем заштите.

Додатни ниво заштите у Android-у обезбеђује SELinux (Security-Enhanced Linux) у enforcing режиму од верзије Android 4.3. SELinux имплементира обавезну контролу приступа (MAC): свака акција процеса се проверава на усклађеност са безбедносном политиком независно од права власника датотеке. Чак и ако апликација ради са UID root, SELinux може блокирати приступ одређеним ресурсима.

Песак у iOS-у

Песак iOS-а се сматра једним од најстрожих међу мобилним оперативним системима. Свака апликација је изолована на нивоу контејнера — заштићене области система датотека којој је приступ немогућ из других апликација. iOS користи комбинацију обавезне контроле приступа кроз Sandbox Kernel Extension (Sandbox.kext) и механизма entitlement за доделу проширених права.

Структура iOS контејнера

Контејнер iOS апликације се састоји од неколико директоријума са различитим нивоима приступа. Documents — за корисничке податке који се чувају приликом прављења резервне копије путем iCloud-а и iTunes-а. Library — за конфигурационе датотеке и кеш. tmp — за привремене податке које систем може да обрише у било ком тренутку. AppName.app — сам пакет апликације који је доступан само за читање.

Приступ подацима других апликација је категорички забрањен. iOS не обезбеђује АПИ за читање датотека из контејнера друге апликације. Једини начин размене података је кроз системске механизме: UIActivityViewController за дељење, UIPasteboard за клипборд, App Groups за апликације истог програмера. Сваки од ових механизама ради под контролом оперативног система.

Entitlements и App Sandbox у iOS-у

Проширене могућности изван стандардног песка се обезбеђују кроз Entitlements — дигиталне потписе који се додају у потпис кода апликације. На пример, entitlement com.apple.security.application-groups омогућава апликацијама из исте групе да имају заједнички контејнер. Push обавештења, iCloud, Apple Pay — све ове функције захтевају одговарајуће entitlements.

Важно је напоменути да entitlements у iOS-у нису исто што и дозволе (permissions). Дозволе се захтевају од корисника у рантајму (на пример, приступ камери), док entitlements систем проверава у фази инсталације и корисник их не може мењати. Entitlement одређује програмер и потписује га Apple у процесу прегледа апликације.

Песак у Android-у

Android користи вишеслојни модел песка заснован на Linux кернелу. Свака апликација ради као засебан Linux корисник са јединственим UID-ом, што обезбеђује основну изолацију на нивоу процеса и датотека. Додатни слојеви — SELinux за обавезну контролу приступа и Permissions за контролу приступа системским АПИ-јима.

SELinux и UID изолација

SELinux у Android-у ради у enforcing режиму, што значи обавезну примену безбедносних политика. Свакој апликацији се додељује безбедносни контекст (security context), а сви системски позиви се проверавају на усклађеност са политиком. SELinux у Android-у садржи преко 1500 правила која покривају систем датотека, међупроцесну комуникацију, сокете и системске позиве.

UID изолација спречава директан приступ апликације датотекама друге апликације. На пример, апликација A са UID 10001 не може читати датотеке апликације B са UID 10002, чак и ако обе раде у име истог корисника телефона. Ово је основни принцип вишекорисничке безбедности Linux-а прилагођен за мобилне уређаје.

java
// Приступ сопственом директоријуму апликације у Android-у
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);

// Покушај приступа туђем директоријуму ће изазвати SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");

// Коришћење FileProvider-а за безбедно дељење датотека
Uri contentUri = FileProvider.getUriForFile(
    context, "com.example.fileprovider", file
);

Android обезбеђује додатне механизме за безбедну размену података између апликација. ContentProvider — Android компонента која омогућава апликацији да обезбеди приступ својим подацима другим апликацијама кроз строго дефинисани URI. FileProvider — безбедан начин дељења датотека без откривања путања система датотека.

Ограничења и безбедност песка

Иако је App Sandbox моћан безбедносни механизам, он има фундаментална ограничења. Песак штити од хоризонталног приступа (апликација-ка-апликацији), али не и од вертикалног (малвер на нивоу кернела или физички приступ уређају). При jailbreak-у или root приступу, песак може бити заобиђен јер нападач добија права суперкорисника.

Друго ограничење — злонамерне дозволе. Ако корисник одобри апликацији приступ контактима и микрофону, песак не може спречити прикупљање ових података јер апликација користи легитимне системске АПИ-је. Заштита у овом случају прелази на ниво свести корисника и прегледа App Store и Google Play.

Треће ограничење — интеракција између пескова. Неке системске услуге (NotificationListenerService, AccessibilityService) имају проширен приступ подацима других апликација. Нападач може искористити ове услуге за заобилажење песка ако добије одговарајуће дозволе. Google и Apple стално ажурирају политике за такве услуге.

Упркос ограничењима, песак је критична безбедносна компонента мобилних оперативних система. Према Android Security Report (2024), изолација sandbox-а спречава преко 99% покушаја међуапликацијског приступа подацима. У комбинацији са Code Signing, App Review и runtime permissions, Sandbox формира вишеслојну заштиту савременог мобилног уређаја.

Често постављана питања

Шта је App Sandbox једноставним речима?

Песак за апликације — систем изолације у коме свака апликација ради у сопственом изолованом простору, без приступа подацима других апликација без изричите дозволе корисника.

Која је разлика између песка у iOS-у и Android-у?

iOS користи строгу контејнерску изолацију кроз Sandbox.kext и entitlements. Android користи UID раздвајање на нивоу Linux кернела и SELinux. Принцип је исти, али се имплементација и флексибилност разликују.

Може ли се заобићи песак апликације?

Заобилажење песка је могуће само уз jailbreak (iOS) или root приступ (Android). На стандардним уређајима без модификације ОС-а, заобилажење песка није могуће кроз легитимне АПИ-је.

Како апликације размењују податке кроз песак?

iOS користи UIActivityViewController и App Groups. Android — ContentProvider, FileProvider и Intents. Сви механизми раде кроз системске АПИ-је са безбедносном контролом.

Шта је принцип минималних привилегија у Sandbox-у?

Принцип значи да апликација добија само она права која су неопходна за њен рад. Приступ додатним ресурсима се захтева кроз дозволе и одобрава га корисник.

Резиме

  • App Sandbox — фундаментални безбедносни механизам мобилних ОС-ова који изолује апликације једне од других на нивоу система датотека и процеса.
  • Принцип рада — свака апликација добија сопствени UID, изоловани директоријум и минималне привилегије са контролом приступа на нивоу кернела.
  • iOS — строга контејнерска изолација кроз Sandbox.kext, проширена права кроз entitlements, размена података кроз системске контролере.
  • Android — Linux UID раздвајање, SELinux у enforcing режиму, ContentProvider и FileProvider за безбедно дељење.
  • Изузеци — системске услуге (AccessibilityService) и корисничке дозволе (контакти, микрофон) могу делимично заобићи изолацију.
  • Ограничења — песак не штити од root/jailbreak и од легитимног прикупљања података кроз дозвољене АПИ-је.
  • Ефикасност — спречава преко 99% покушаја међуапликацијског приступа, према Android Security Report 2024.

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође