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-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.
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.
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.
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.
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.
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.
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.
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 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.
// Å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.
Ä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
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.
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.
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.
iOS använder UIActivityViewController och App Groups. Android — ContentProvider, FileProvider och Intents. Alla mekanismer fungerar via system-API:er med säkerhetskontroll.
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
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.
Läs också