Sandbox — was ist das, Isolationsprinzip und Dateisystem

Autor: IT Sectr Veröffentlicht: 2026-07-09 Lesezeit: 10 Min.

Sandbox ist eine isolierte Laufzeitumgebung für iOS-Apps, die den Zugriff auf das Dateisystem, das Netzwerk, Hardwareressourcen und Daten anderer Apps einschränkt. Jede App erhält bei der Installation ihre eigene Sandbox-Umgebung, und alle ihre Dateioperationen werden automatisch in diesen isolierten Bereich umgeleitet. Laut Apple App Sandbox Design Guide (2026) basiert die Sandbox-Architektur auf drei Schutzebenen: Isolierung des Dateisystems, Kontrolle der prozessübergreifenden Kommunikation und Trennung der Hardwareressourcen mit ausdrücklicher Berechtigungsanfrage über Entitlements.

Das Wichtigste

  • Sandbox — isoliertes Dateisystem und Laufzeitumgebung, einzigartig für jede iOS-App.
  • Jede App hat ihr eigenes Sandbox-Verzeichnis mit den Unterordnern Documents, Library, tmp und Bundle.
  • Zugriff auf andere Apps ist verboten: Lesen, Schreiben und Ausführen von Code außerhalb der Sandbox werden vom System blockiert.
  • Entitlements und Capabilities erweitern die Sandbox: App Groups, iCloud und Security-Scoped Bookmarks erfordern eine ausdrückliche Erlaubnis.
  • UIDocumentPicker und Share Extension sind die einzigen Möglichkeiten, Dateien zwischen isolierten Apps auszutauschen.

Was ist Sandbox

Sandbox ist ein System der zwingenden Zugriffskontrolle (Mandatory Access Control), das auf Kernelebene von iOS implementiert ist (XNU — Kernel-Erweiterung Sandbox.kext). Jede App erhält beim Start ein eindeutiges UUID-Sandbox-Profil, das festlegt, auf welche Ressourcen die App zugreifen darf.

Die Sandbox-Architektur umfasst drei Schlüsselkomponenten: File System Isolation (jede App sieht nur ihren eigenen Container), Network Access Control (Anfragen an das lokale Netzwerk können eingeschränkt werden) und Inter-Process Communication (Verbot direkter IPC mit anderen Apps). Apple führte die Sandbox in iOS 2.0 ein und hat die Einschränkungen seither in jeder Hauptversion deutlich verschärft.

Die Sandbox ist nicht optional — alle Apps aus dem App Store laufen in der Sandbox. Ein Entwickler kann die Sandbox nicht deaktivieren oder ihre Einschränkungen umgehen. Der Versuch, auf eine verbotene Ressource zuzugreifen, endet mit dem Fehlercode EPERM (Operation not permitted) und einem Eintrag im Systemprotokoll.

swift
import Foundation

// Versuch, auf die Datei einer anderen App zuzugreifen — gibt nil zurück
let otherAppPath = "/var/mobile/Containers/Data/Application/OTHER-UUID/Documents/file.txt"
let data = try? Data(contentsOf: URL(fileURLWithPath: otherAppPath))
// data == nil — die Sandbox blockiert den Zugriff

// Korrekter Zugriff — innerhalb der eigenen Sandbox
let fileManager = FileManager.default
guard let documentsURL = fileManager.urls(
    for: .documentDirectory,
    in: .userDomainMask
).first else { return }

let myFileURL = documentsURL.appendingPathComponent("notes.txt")
try "Hello, Sandbox!".write(to: myFileURL, atomically: true, encoding: .utf8)

Struktur der App-Sandbox

Die Sandbox jeder App in iOS enthält mehrere vordefinierte Verzeichnisse, die über die Foundation-API zugänglich sind. Der Ort auf dem physischen Medium ist /var/mobile/Containers/Data/Application/{UUID}/, aber Entwickler sollten diesen Pfad nicht direkt verwenden: Er ändert sich bei jedem Neustart des Geräts in verschiedenen iOS-Versionen.

Die wichtigsten Sandbox-Verzeichnisse: Bundle (.app — schreibgeschützt, enthält den ausführbaren Code und die Ressourcen), Documents (Benutzerdaten, werden in iCloud gesichert), Library (Caches, Preferences, Application Support — mit unterschiedlichen Backup-Regeln), tmp (temporäre Dateien, die vom System bei Platzmangel gelöscht werden). Jedes Verzeichnis hat seinen eigenen Lebenszyklus und seine eigene Speicherrichtlinie.

Den physischen Sandbox-Pfad erhält man über NSHomeDirectory() oder FileManager.url(for: .documentDirectory). Apple empfiehlt die URL-basierte API, da sie die interne Struktur des Dateisystems abstrahiert und bei Änderungen der macOS-Sandbox auf dem Desktop stabil bleibt.

Sandbox-VerzeichnisAbruf über FileManagerBerechtigungen
Documents.documentDirectoryLesen und Schreiben
BundleBundle.main.bundlePathNur lesen
Library.libraryDirectoryLesen und Schreiben
tmpNSTemporaryDirectory()Lesen und Schreiben
App Group.containerURL(forSecurityApplicationGroupIdentifier:)Lesen und Schreiben

Zugriff auf Dateien außerhalb der Sandbox

Der direkte Zugriff auf das Dateisystem anderer Apps ist in iOS vollständig blockiert. Selbst wenn ein Entwickler die Container-UUID einer anderen App kennt, gibt die Sandbox auf Kernelebene beim Versuch zu lesen oder zu schreiben einen Fehler zurück. Dies ist ein grundlegender Unterschied zwischen iOS und macOS, wo die Sandbox flexibler ist.

Apple bietet drei legitime Mechanismen für den Datenaustausch zwischen Apps: UIDocumentPickerViewController (der Benutzer wählt eine Datei über die Systemoberfläche aus, und die App erhält eine Security-Scoped-URL), Share Extension (eine Erweiterung zum Übergeben von Daten an eine andere App) und App Groups (ein gemeinsames Verzeichnis für Apps desselben Entwicklers).

UIDocumentPicker ist der einzige Weg, ohne vorherige Einrichtung auf Dateien anderer Apps zuzugreifen. Der Benutzer wählt über den standardmäßigen System-Picker ausdrücklich eine Datei aus, und iOS stellt der App eine temporäre Security-Scoped-URL bereit. Der Zugriff dauert bis zum Schließen des Pickers oder bis zum Aufruf von stopAccessingSecurityScopedResource.

Security-Scoped Bookmarks

Ein Security-Scoped Bookmark ist ein iOS-Mechanismus, mit dem der Zugriff auf eine Datei außerhalb der Sandbox zwischen App-Starts erhalten bleibt. Wenn der Benutzer eine Datei über UIDocumentPicker auswählt, kann die App aus der Security-Scoped-URL ein Bookmark erstellen und in UserDefaults oder einem anderen Speicher ablegen.

Beim nächsten Start stellt die App den Zugriff über URLByResolvingBookmarkData wieder her, das eine Security-Scoped-URL zurückgibt. Dann muss vor dem Lesen der Datei startAccessingSecurityScopedResource und nach Abschluss stopAccessingSecurityScopedResource aufgerufen werden. Die Bilanz der Aufrufe ist zwingend — jeder start muss ein entsprechendes stop haben, sonst erschöpft das System das Limit der Security-Scoped-Ressourcen.

swift
// Security-Scoped Bookmark erstellen
func createBookmark(for url: URL) -> Data? {
    return try? url.bookmarkData(
        options: .minimalBookmark,
        includingResourceValuesForKeys: nil,
        relativeTo: nil
    )
}

// Bookmark-Daten in URL auflösen
func resolveBookmark(data: Data) -> URL? {
    var isStale = false
    let url = try? URL.byResolvingBookmarkData(
        data,
        options: .withoutUI,
        relativeTo: nil,
        bookmarkDataIsStale: &isStale
    )
    
    if isStale {
        // Bookmark ist veraltet, neues muss erstellt werden
    }
    
    return url
}

Wichtige Einschränkung: Security-Scoped Bookmarks funktionieren nicht für Dateien innerhalb der eigenen Sandbox — nur für Dateien, die über UIDocumentPicker oder iCloud Drive bezogen wurden. Ein Bookmark enthält Security-Scoped-Daten, anhand derer das System erkennen kann, welche App für welche Datei Zugriff anfordert. Wenn das Zertifikat der App abläuft oder sich ändert, wird das Bookmark ungültig.

Sandbox und App Groups

App Groups ist ein iOS-Mechanismus, der mehreren Apps (und ihren Erweiterungen) desselben Entwicklers erlaubt, ein gemeinsames Sandbox-Verzeichnis zu nutzen. Zum Aktivieren muss man in Xcode die Capability App Groups hinzufügen und für alle Ziel-Apps dieselbe Gruppenkennung angeben.

Das gemeinsame App-Groups-Verzeichnis liegt außerhalb der Sandbox jeder einzelnen App, aber alle Apps der Gruppe haben vollen Lese- und Schreibzugriff darauf. Dadurch können Dateien, Datenbanken (Core Data mit der Store-URL in der App Group) und UserDefaults (über initWithSuiteName) zwischen der Haupt-App, dem Today Widget, der Watch Extension und der Share Extension ausgetauscht werden.

Apple empfiehlt App Groups für die Zustandssynchronisierung zwischen einer App und ihren Erweiterungen. Beispielsweise kann das Today Widget Daten aus dem gemeinsamen App-Groups-Verzeichnis lesen, in das die Haupt-App aktuelle Daten schreibt. Dabei bleibt jede App dennoch von anderen App Groups isoliert — nur Apps mit derselben Gruppenkennung haben Zugriff.

Einschränkungen der Sandbox in iOS

Die Sandbox in iOS erlegt eine Reihe strenger Einschränkungen auf, die bei der Entwicklung berücksichtigt werden müssen. Die wichtigsten: Verbot von dynamischem Code (Laden und Ausführen von Code außerhalb der Sandbox), Verbot des direkten Zugriffs auf Adressbuch, Kalender und Fotos ohne Zustimmung des Benutzers (Privacy-Framework) und Einschränkungen beim Erstellen von Kindprozessen (fork und exec sind verboten).

Netzwerk: Apps können sich über TCP/UDP mit beliebigen Remote-Servern verbinden, aber der Zugriff auf localhost ist eingeschränkt — andere Apps können sich nicht mit einem Server innerhalb Ihrer App verbinden (außer bei Debug-Builds). Multicast- und Broadcast-UDP sind ebenfalls für App-Store-Apps blockiert.

Hardwareressourcen: Der Zugriff auf Kamera, Mikrofon, Geolokalisierung, Bluetooth und HealthKit erfordert die ausdrückliche Zustimmung des Benutzers über den Systemdialog. Für jeden Ressourcentyp verwendet iOS ein separates Entitlement und einen Info.plist-Schlüssel mit Begründung (NSPhotoLibraryUsageDescription, NSCameraUsageDescription). Wird die Erlaubnis ohne Begründung in der Info.plist angefordert, beendet sich die App.

  • Dynamischer Code — verboten: JavaScriptCore für JS im WebView, aber kein beliebiger Maschinencode
  • Kindprozesse — fork, exec und system sind aus der Sandbox nicht verfügbar
  • Zugriff auf Geräte — Kamera, Mikrofon und GPS erfordern einen Systemdialog
  • Lokales Netzwerk — Multicast- und Broadcast-UDP sind für den App Store blockiert
  • Verschlüsselungsschlüssel — Keychain ist verfügbar, aber nur für die eigene App (kSecAttrAccessGroup für App Group)

Häufig gestellte Fragen

Was ist Sandbox in iOS?

Sandbox ist eine isolierte Laufzeitumgebung für iOS-Apps, die den Zugriff auf das Dateisystem, das Netzwerk und Daten anderer Apps einschränkt. Jede App hat einen eindeutigen Sandbox-Container, dessen Zugriff auf Kernelebene von iOS über Sandbox.kext kontrolliert wird.

Welche Dateien sind in der Sandbox der App verfügbar?

Der App stehen zur Verfügung: Documents (Benutzerdaten), Library (Caches, Preferences, Application Support), tmp (temporäre Dateien) und Bundle (nur lesen). Das App-Groups-Verzeichnis steht Apps derselben Entwicklergruppe zur Verfügung.

Wie erhält man Zugriff auf Dateien einer anderen App?

Über UIDocumentPickerViewController — der Benutzer wählt eine Datei über die Systemoberfläche aus. iOS stellt eine Security-Scoped-URL bereit, die bis zum Aufruf von stopAccessingSecurityScopedResource gültig ist. Alternativ bietet sich eine Share Extension zum Übertragen von Daten zwischen Apps an.

Was ist ein Security-Scoped Bookmark?

Ein Security-Scoped Bookmark sind Daten, die den Zugriff auf eine Datei außerhalb der Sandbox zwischen App-Starts aufrechterhalten. Er wird aus einer Security-Scoped-URL (aus UIDocumentPicker) über bookmarkData erstellt. Beim nächsten Start wird das Bookmark über URLByResolvingBookmarkData wiederhergestellt.

Kann man die Sandbox in iOS deaktivieren?

Nein, für Apps aus dem App Store kann die Sandbox nicht deaktiviert werden. Auf Jailbreak-Geräten ist die Deaktivierung möglich, aber sie ist mit der Veröffentlichung im App Store nicht kompatibel. Entwickler können ohne Sandbox im Simulator testen, aber reale Geräte wenden die Sandbox immer an.

Zusammenfassung

  • Sandbox — das fundamentale Sicherheitssystem von iOS, das jede App auf Kernelebene mit Mandatory Access Control isoliert.
  • Die Sandbox-Struktur umfasst Documents-, Library-, tmp- und Bundle-Verzeichnisse mit unterschiedlichen Zugriffsrechten und Backup-Richtlinien.
  • Der direkte Zugriff auf das Dateisystem anderer Apps ist vollständig blockiert — nur UIDocumentPicker und App Groups sind legitim.
  • Security-Scoped Bookmarks sichern dauerhaften Zugriff auf Dateien außerhalb der Sandbox, die über Systemschnittstellen bezogen wurden.
  • App Groups schaffen einen gemeinsamen Sandbox-Bereich für eine Gruppe von Apps und Erweiterungen desselben Entwicklers.
  • Die Sandbox-Einschränkungen umfassen das Verbot von dynamischem Code, Kindprozessen, Multicast-Netzwerken und obligatorische Systemdialoge für Hardwareressourcen.
  • Alle App-Store-Apps laufen in der Sandbox — das ist keine optionale, sondern eine zwingende architektonische Besonderheit von iOS.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch