App-sandlåda inom mobil utveckling — vad det är, mekanism och funktionsprincip

Författare: IT Sectr Publicerad: 2026-05-18 Lästid: 8 min

App-sandlåda (App Sandbox) — en isoleringsmekanism som begränsar en applikations åtkomst till filsystemet, data från andra applikationer och operativsystemets systemresurser. Varje applikation arbetar i sin egen isolerade miljö med minimala privilegier och begär åtkomst till ytterligare funktioner via tillstånd. Enligt Apple Security Documentation (2025) är Sandbox en grundläggande del av dataskydd på mobila plattformar. App Sandbox förhindrar obehörig åtkomst till användardata även om en enskild applikation komprometteras.

Huvudpunkter

  • App Sandbox — en isoleringsmekanism för applikationer som begränsar åtkomst till filsystemet, processer och data från andra applikationer på operativsystemsnivå.
  • Funktionsprincip — varje applikation får en egen katalog med begränsade rättigheter och startas med minimala privilegier via obligatorisk åtkomstkontroll (MAC).
  • iOS — använder strikt isolering på kärnnivå: varje applikation arbetar i sin egen chroot-liknande miljö med unikt UID.
  • Android — tillämpar isolering via SELinux och UID-separering, varje applikation startas som en separat Linux-användare med egen process och data.
  • Undantag — åtkomst till delade resurser (kontakter, foton, geolokalisering) är endast möjlig via system-API med användarens uttryckliga samtycke.

Vad är App Sandbox?

App-sandlåda (App Sandbox) — en arkitektonisk säkerhetsmekanism som isolerar varje applikation i sin egen körningsmiljö med begränsad åtkomst till systemresurser. Termen kommer från konceptet “sandlåda” för barn — ett säkert utrymme där barnet kan leka utan att få tillgång till farliga föremål. På samma sätt arbetar applikationen i en begränsad miljö, utan åtkomst till andra applikationers data eller kritiska systemkomponenter.

Sandboxens huvudmål är att implementera principen om minimala privilegier: varje applikation får endast de rättigheter som krävs för att utföra de deklarerade funktionerna. Även om en angripare hittar en sårbarhet i applikationen, tillåter sandlådan inte åtkomst till andra applikationers data, foton, kontakter eller systemfiler. Skadan begränsas till en enda applikation.

Mobila operativsystem införde sandlådor tidigare än stationära system. iOS har använt Sandbox sedan den första SDK-versionen (2008), Android — sedan version 1.0 (2008), men med förstärkning i Android 4.3 (2013) via SELinux. Stationära system kommer ikapp: macOS införde Sandbox 2012, Windows — isolerade UWP-applikationer i Windows 8.

Hur fungerar isolering i sandlådan?

Isolering i sandlådan uppnås genom en kombination av flera mekanismer på olika nivåer av operativsystemet. På filsystemsnivå tilldelas varje applikation en egen skyddad katalog som endast den har full åtkomst till. På processnivå används en unik användaridentifierare (UID) för varje applikation. På kärnnivå tillämpas obligatorisk åtkomstkontroll (MAC) via SELinux eller liknande mekanismer.

Filsystemsisolering

Varje applikation får en egen rotkatalog på enhetens filsystem. I iOS är detta katalogen /var/mobile/Containers/Data/Application/{UUID}, i Android — /data/data/{package_name}. Applikationen kan endast läsa och skriva filer inom denna katalog. Åtkomst till filer utanför denna katalog blockeras på operativsystemets kärnnivå.

Systemet tillhandahåller också särskilda delade kataloger med begränsad åtkomst. I iOS är dessa Documents-katalogen för användardata, Library för inställningar och Caches för temporära filer. I Android — intern lagring (getFilesDir) och extern lagring (getExternalFilesDir), som inte kräver ytterligare tillstånd.

Process- och UID-isolering

I Android startas varje applikation som en separat Linux-process med unikt UID (User ID). UID tilldelas vid installationen av applikationen och förblir oförändrat under hela livscykeln. Processer med olika UID är isolerade från varandra på kärnnivå — de kan inte komma åt varandras minne eller filer. En liknande mekanism fungerar i iOS via XNU-kärnan och dess skyddssystem.

En extra skyddsnivå i Android tillhandahålls av SELinux (Security-Enhanced Linux) i enforcing-läge sedan Android 4.3. SELinux implementerar obligatorisk åtkomstkontroll (MAC): varje processåtgärd kontrolleras för överensstämmelse med säkerhetspolicyn oavsett filägarens rättigheter. Även om en applikation körs med root-UID kan SELinux blockera åtkomst till vissa resurser.

Sandlåda i iOS

iOS-sandlådan anses vara en av de strängaste bland mobila operativsystem. Varje applikation är isolerad på containernivå — ett skyddat område i filsystemet som är oåtkomligt från andra applikationer. iOS använder en kombination av obligatorisk åtkomstkontroll via Sandbox Kernel Extension (Sandbox.kext) och entitlement-mekanismen för att bevilja utökade rättigheter.

iOS-containerstruktur

Behållaren för en iOS-applikation består av flera kataloger med olika åtkomstnivåer. Documents — för användardata som sparas vid säkerhetskopiering via iCloud och iTunes. Library — för konfigurationsfiler och cache. tmp — för temporär data som systemet kan ta bort när som helst. AppName.app — själva applikationspaketet, som är skrivskyddat.

Åtkomst till andra applikationers data är kategoriskt förbjuden. iOS tillhandahåller inget API för att läsa filer från en annan applikations container. Det enda sättet att utbyta data är via systemmekanismer: UIActivityViewController för delning, UIPasteboard för urklipp, App Groups för applikationer från samma utvecklare. Var och en av dessa mekanismer fungerar under operativsystemets kontroll.

Entitlements och App Sandbox i iOS

Utökade möjligheter utanför standardsandlådan tillhandahålls via Entitlements — digitala signaturer som läggs till i applikationens kodsignatur. Till exempel tillåter entitlement com.apple.security.application-groups applikationer i samma grupp att ha en delad container. Push-notiser, iCloud, Apple Pay — alla dessa funktioner kräver motsvarande entitlements.

Det är viktigt att notera att entitlements i iOS inte är samma sak som tillstånd (permissions). Tillstånd begärs från användaren under körning (till exempel åtkomst till kameran), medan entitlements kontrolleras av systemet i installationsfasen och kan inte ändras av användaren. Entitlement bestäms av utvecklaren och signeras av Apple under applikationsgranskningsprocessen.

Sandlåda i Android

Android använder en flerskiktad sandlådemodell baserad på Linux-kärnan. Varje applikation fungerar som en separat Linux-användare med unikt UID, vilket ger grundläggande isolering på process- och filnivå. Ytterligare lager — SELinux för obligatorisk åtkomstkontroll och Permissions för åtkomstkontroll till system-API:er.

SELinux och UID-isolering

SELinux i Android fungerar i enforcing-läge, vilket innebär obligatorisk tillämpning av säkerhetspolicyer. Varje applikation tilldelas en säkerhetskontext (security context) och alla systemanrop kontrolleras för överensstämmelse med policyn. SELinux i Android innehåller över 1500 regler som täcker filsystemet, interprocesskommunikation, sockets och systemanrop.

UID-isolering förhindrar en applikation från att direkt komma åt en annan applikations filer. Till exempel kan applikation A med UID 10001 inte läsa filer från applikation B med UID 10002, även om båda körs för samma telefonanvändares räkning. Detta är grundprincipen för fleranvändarsäkerhet i Linux, anpassad för mobila enheter.

java
// Åtkomst till applikationens egen katalog i Android
File appDir = context.getFilesDir();
File cacheDir = context.getCacheDir();
File externalDir = context.getExternalFilesDir(null);

// Försök att komma åt någon annans katalog kommer att orsaka SecurityException
// File otherApp = new File("/data/data/com.other.app/shared_prefs/");

// Användning av FileProvider för säker fildelning
Uri contentUri = FileProvider.getUriForFile(
    context, "com.example.fileprovider", file
);

Android tillhandahåller ytterligare mekanismer för säkert datautbyte mellan applikationer. ContentProvider — en Android-komponent som gör det möjligt för en applikation att ge åtkomst till sina data till andra applikationer via en strikt definierad URI. FileProvider — ett säkert sätt att dela filer utan att avslöja filsökvägar.

Begränsningar och säkerhet för sandlådan

Även om App Sandbox är en kraftfull skyddsmekanism har den grundläggande begränsningar. Sandlådan skyddar mot horisontell åtkomst (applikation-till-applikation), men inte mot vertikal åtkomst (skadlig programvara på kärnnivå eller fysisk åtkomst till enheten). Vid jailbreak eller root-åtkomst kan sandlådan kringgås eftersom angriparen får superanvändarrättigheter.

Den andra begränsningen — skadliga tillstånd. Om användaren ger applikationen åtkomst till kontakter och mikrofon kan sandlådan inte förhindra insamling av dessa data eftersom applikationen använder legitima system-API:er. Skyddet övergår i detta fall till nivån av användarmedvetenhet och granskning av App Store och Google Play.

Den tredje begränsningen — interaktion mellan sandlådor. Vissa systemtjänster (NotificationListenerService, AccessibilityService) har utökad åtkomst till andra applikationers data. En angripare kan använda dessa tjänster för att kringgå sandlådan om den får motsvarande tillstånd. Google och Apple uppdaterar ständigt policyer för sådana tjänster.

Trots begränsningarna är sandlådan en kritisk säkerhetskomponent i mobila operativsystem. Enligt Android Security Report (2024) förhindrar sandlådeisolering över 99 % av försök till applikationsövergripande dataåtkomst. I kombination med Code Signing, App Review och körtidstillstånd utgör Sandbox det flerskiktade skyddet för en modern mobil enhet.

Vanliga frågor

Vad är App Sandbox i enkla ord?

App-sandlåda — ett isoleringssystem där varje applikation arbetar i sitt eget isolerade utrymme, utan åtkomst till andra applikationers data utan användarens uttryckliga tillstånd.

Vad är skillnaden mellan sandlådan i iOS och Android?

iOS använder strikt containerisolering via Sandbox.kext och entitlements. Android använder UID-separering på Linux-kärnnivå och SELinux. Principen är densamma, men implementeringen och flexibiliteten skiljer sig åt.

Kan app-sandlådan kringgås?

Kringgående av sandlådan är endast möjligt med jailbreak (iOS) eller root-åtkomst (Android). På standardenheter utan modifiering av operativsystemet är kringgående av sandlådan inte möjligt via legitima API:er.

Hur utbyter applikationer data via sandlådan?

iOS använder UIActivityViewController och App Groups. Android — ContentProvider, FileProvider och Intents. Alla mekanismer fungerar via system-API:er med säkerhetskontroll.

Vad är principen om minimala privilegier i Sandbox?

Principen innebär att applikationen får endast de rättigheter som krävs för dess funktion. Åtkomst till ytterligare resurser begärs via tillstånd och beviljas av användaren.

Sammanfattning

  • App Sandbox — grundläggande säkerhetsmekanism i mobila operativsystem som isolerar applikationer från varandra på filsystems- och processnivå.
  • Funktionsprincip — varje applikation får sitt eget UID, isolerad katalog och minimala privilegier med åtkomstkontroll på kärnnivå.
  • iOS — strikt containerisolering via Sandbox.kext, utökade rättigheter via entitlements, datautbyte via systemkontroller.
  • Android — Linux UID-separering, SELinux i enforcing-läge, ContentProvider och FileProvider för säker delning.
  • Undantag — systemtjänster (AccessibilityService) och användartillstånd (kontakter, mikrofon) kan delvis kringgå isoleringen.
  • Begränsningar — sandlådan skyddar inte mot root/jailbreak och mot legitim datainsamling via tillåtna API:er.
  • Effektivitet — förhindrar över 99 % av försök till applikationsövergripande åtkomst enligt Android Security Report 2024.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också