Sandbox — یہ کیا ہے، الگ تھلگ کرنے کا اصول اور فائل سسٹم

مصنف: IT Sectr اشاعت: 2026-07-09 مطالعے کا وقت: 10 منٹ

Sandbox iOS ایپس کے لیے ایک الگ تھلگ رن ٹائم ماحول ہے جو فائل سسٹم، نیٹ ورک، ہارڈویئر وسائل اور دیگر ایپس کے ڈیٹا تک رسائی کو محدود کرتا ہے۔ ہر ایپ کو انسٹالیشن کے وقت اپنا Sandbox ماحول ملتا ہے، اور اس کے تمام فائل آپریشن خود بخود اس الگ تھلگ علاقے میں منتقل ہو جاتے ہیں۔ Apple App Sandbox Design Guide (2026) کے مطابق، سینڈ باکس آرکیٹیکچر تحفظ کی تین سطحوں پر مبنی ہے: فائل سسٹم کی تنہائی، بین العمل مواصلات کا کنٹرول، اور entitlements کے ذریعے واضح اجازت کی درخواست کے ساتھ ہارڈویئر وسائل کی علیحدگی۔

اہم نکات

  • Sandbox — الگ تھلگ فائل سسٹم اور رن ٹائم ماحول، ہر iOS ایپ کے لیے منفرد۔
  • ہر ایپ کی اپنی Sandbox ڈائریکٹری ہوتی ہے جس میں Documents، Library، tmp اور Bundle ذیلی فولڈر ہوتے ہیں۔
  • دیگر ایپس تک رسائی ممنوع ہے: Sandbox سے باہر پڑھنا، لکھنا اور کوڈ چلانا سسٹم کے ذریعے روکا جاتا ہے۔
  • Entitlements اور Capabilities Sandbox کو وسعت دیتے ہیں: App Groups، iCloud اور Security-Scoped Bookmarks کو واضح اجازت درکار ہوتی ہے۔
  • UIDocumentPicker اور Share Extension — الگ تھلگ ایپس کے درمیان فائلوں کے تبادلے کا واحد ذریعہ۔

Sandbox کیا ہے

Sandbox ایک لازمی رسائی کنٹرول (Mandatory Access Control) نظام ہے جو iOS کرنل کی سطح پر نافذ کیا جاتا ہے (XNU — Sandbox.kext کرنل ایکسٹینشن)۔ ہر ایپ کو لانچ کے وقت ایک منفرد UUID Sandbox پروفائل ملتا ہے، جو طے کرتا ہے کہ ایپ کو کن وسائل تک رسائی کی اجازت ہے۔

Sandbox آرکیٹیکچر میں تین اہم اجزاء شامل ہیں: File System Isolation (ہر ایپ صرف اپنا کنٹینر دیکھتی ہے)، Network Access Control (لوکل نیٹ ورک کی درخواستیں محدود ہو سکتی ہیں) اور Inter-Process Communication (دیگر ایپس کے ساتھ براہ راست IPC پر پابندی)۔ Apple نے iOS 2.0 میں Sandbox متعارف کرایا اور تب سے ہر بڑے ورژن میں پابندیوں کو نمایاں طور پر مضبوط کیا۔

Sandbox اختیاری نہیں ہے — App Store کی تمام ایپس سینڈ باکس میں چلتی ہیں۔ ڈویلپر Sandbox کو غیر فعال نہیں کر سکتا اور نہ ہی اس کی پابندیوں کو نظرانداز کر سکتا ہے۔ ممنوعہ وسیلہ تک رسائی کی کوشش EPERM (Operation not permitted) ایرر کوڈ اور سسٹم لاگ میں اندراج کے ساتھ ختم ہوتی ہے۔

swift
import Foundation

// کسی دوسری ایپ کی فائل تک رسائی کی کوشش — nil واپس کرتا ہے
let otherAppPath = "/var/mobile/Containers/Data/Application/OTHER-UUID/Documents/file.txt"
let data = try? Data(contentsOf: URL(fileURLWithPath: otherAppPath))
// data == nil — Sandbox رسائی روکتا ہے

// درست رسائی — اپنے 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)

ایپ سینڈ باکس کی ساخت

iOS میں ہر ایپ کے Sandbox میں کئی پہلے سے طے شدہ ڈائریکٹریاں ہوتی ہیں جو Foundation API کے ذریعے قابل رسائی ہیں۔ فزیکل میڈیم پر مقام /var/mobile/Containers/Data/Application/{UUID}/ ہے، لیکن ڈویلپرز کو یہ راستہ براہ راست استعمال نہیں کرنا چاہیے: یہ مختلف iOS ورژنز میں ڈیوائس کے ہر ری اسٹارٹ پر تبدیل ہو جاتا ہے۔

Sandbox کی اہم ڈائریکٹریاں: Bundle (.app — صرف پڑھنے کے لیے، قابل عمل کوڈ اور وسائل پر مشتمل)، Documents (صارف کا ڈیٹا، iCloud میں بیک اپ ہوتا ہے)، Library (Caches، Preferences، Application Support — مختلف بیک اپ قواعد کے ساتھ)، tmp (عارضی فائلیں، جگہ کم ہونے پر سسٹم حذف کر دیتا ہے)۔ ہر ڈائریکٹری کا اپنا لائف سائیکل اور ذخیرہ کاری پالیسی ہوتی ہے۔

Sandbox کا فزیکل راستہ NSHomeDirectory() یا FileManager.url(for: .documentDirectory) کے ذریعے حاصل کیا جا سکتا ہے۔ Apple URL پر مبنی API استعمال کرنے کی تجویز دیتا ہے، کیونکہ یہ فائل سسٹم کی اندرونی ساخت کو تجریدی بناتا ہے اور ڈیسک ٹاپ پر macOS Sandbox میں تبدیلی کے باوجود مستحکم رہتا ہے۔

Sandbox ڈائریکٹریFileManager سے حصولاجازتیں
Documents.documentDirectoryپڑھنا اور لکھنا
BundleBundle.main.bundlePathصرف پڑھنا
Library.libraryDirectoryپڑھنا اور لکھنا
tmpNSTemporaryDirectory()پڑھنا اور لکھنا
App Group.containerURL(forSecurityApplicationGroupIdentifier:)پڑھنا اور لکھنا

سینڈ باکس سے باہر کی فائلوں تک رسائی

iOS میں دیگر ایپس کے فائل سسٹم تک براہ راست رسائی مکمل طور پر بند ہے۔ چاہے ڈویلپر کسی دوسری ایپ کے کنٹینر کا UUID جانتا ہو، کرنل کی سطح پر Sandbox پڑھنے یا لکھنے کی کوشش پر ایرر واپس کرتا ہے۔ یہ iOS اور macOS کے درمیان بنیادی فرق ہے، جہاں Sandbox زیادہ لچکدار ہے۔

Apple ایپس کے درمیان ڈیٹا کے تبادلے کے لیے تین جائز طریقہ کار فراہم کرتا ہے: UIDocumentPickerViewController (صارف سسٹم انٹرفیس کے ذریعے فائل منتخب کرتا ہے اور ایپ کو Security-Scoped URL ملتا ہے)، Share Extension (دوسری ایپ میں ڈیٹا منتقل کرنے کے لیے ایکسٹینشن) اور App Groups (ایک ہی ڈویلپر کی ایپس کے لیے مشترکہ ڈائریکٹری)۔

UIDocumentPicker بغیر پہلے سے ترتیب کے دیگر ایپس کی فائلوں تک رسائی کا واحد طریقہ ہے۔ صارف معیاری سسٹم پکر کے ذریعے واضح طور پر فائل منتخب کرتا ہے، اور iOS ایپ کو عارضی Security-Scoped URL فراہم کرتا ہے۔ رسائی پکر کے بند ہونے تک یا stopAccessingSecurityScopedResource کو کال کرنے تک جاری رہتی ہے۔

Security-Scoped Bookmarks

Security-Scoped Bookmark ایک iOS طریقہ کار ہے جو ایپ لانچ کے درمیان Sandbox سے باہر کی فائل تک رسائی برقرار رکھنے کی اجازت دیتا ہے۔ جب صارف UIDocumentPicker کے ذریعے فائل منتخب کرتا ہے، تو ایپ Security-Scoped URL سے بک مارک بنا سکتی ہے اور اسے UserDefaults یا کسی اور اسٹوریج میں محفوظ کر سکتی ہے۔

اگلی لانچ پر، ایپ URLByResolvingBookmarkData کے ذریعے رسائی بحال کرتی ہے، جو Security-Scoped URL واپس کرتا ہے۔ پھر فائل پڑھنے سے پہلے startAccessingSecurityScopedResource اور کام مکمل ہونے کے بعد stopAccessingSecurityScopedResource کو کال کرنا ضروری ہے۔ کالز کا توازن لازمی ہے — ہر start کے لیے ایک منسلک stop ہونا چاہیے، ورنہ سسٹم Security-Scoped وسائل کی حد ختم کر دے گا۔

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

// بک مارک ڈیٹا کو URL میں حل کریں
func resolveBookmark(data: Data) -> URL? {
    var isStale = false
    let url = try? URL.byResolvingBookmarkData(
        data,
        options: .withoutUI,
        relativeTo: nil,
        bookmarkDataIsStale: &isStale
    )
    
    if isStale {
        // بک مارک پرانا ہے، نیا بنانے کی ضرورت ہے
    }
    
    return url
}

اہم حد: Security-Scoped Bookmarks آپ کے اپنے Sandbox کے اندر کی فائلوں کے لیے کام نہیں کرتے — صرف UIDocumentPicker یا iCloud Drive کے ذریعے حاصل کردہ فائلوں کے لیے۔ بک مارک میں Security-Scoped ڈیٹا ہوتا ہے جو سسٹم کو یہ شناخت کرنے دیتا ہے کہ کون سی ایپ کس فائل کے لیے رسائی کی درخواست کر رہی ہے۔ اگر ایپ کا سرٹیفکیٹ ختم یا تبدیل ہو جائے تو بک مارک ناکارہ ہو جاتا ہے۔

Sandbox اور App Groups

App Groups ایک iOS طریقہ کار ہے جو ایک ہی ڈویلپر کی متعدد ایپس (اور ان کے ایکسٹینشنز) کو مشترکہ Sandbox ڈائریکٹری بانٹنے کی اجازت دیتا ہے۔ فعال کرنے کے لیے Xcode میں App Groups Capability شامل کرنا اور تمام ہدف ایپس کے لیے ایک جیسا گروپ شناخت کنندہ متعین کرنا ضروری ہے۔

مشترکہ App Groups ڈائریکٹری ہر انفرادی ایپ کے Sandbox سے باہر ہوتی ہے، لیکن گروپ کی تمام ایپس کو اس پر مکمل پڑھنے اور لکھنے کی رسائی ہوتی ہے۔ یہ مرکزی ایپ، Today Widget، Watch Extension اور Share Extension کے درمیان فائلوں، ڈیٹا بیسز (App Group میں Store URL کے ساتھ Core Data) اور UserDefaults (initWithSuiteName کے ذریعے) کے تبادلے کی اجازت دیتا ہے۔

Apple ایپ اور اس کے ایکسٹینشنز کے درمیان حالت کی ہم آہنگی کے لیے App Groups استعمال کرنے کی تجویز دیتا ہے۔ مثال کے طور پر، Today Widget مشترکہ App Groups ڈائریکٹری سے ڈیٹا پڑھ سکتا ہے، جہاں مرکزی ایپ تازہ ترین ڈیٹا لکھتی ہے۔ ساتھ ہی، ہر ایپ اب بھی دیگر App Groups سے الگ تھلگ ہے — صرف ایک ہی گروپ شناخت کنندہ والی ایپس کو رسائی ملتی ہے۔

iOS میں سینڈ باکس کی حدود

iOS میں Sandbox کئی سخت پابندیاں عائد کرتا ہے جنہیں ترقی کے دوران مدنظر رکھنا ضروری ہے۔ اہم: متحرک کوڈ پر پابندی (Sandbox سے باہر کوڈ لوڈ اور چلانا)، صارف کی اجازت کے بغیر ایڈریس بک، کیلنڈر اور تصاویر تک براہ راست رسائی پر پابندی (Privacy framework)، اور چائلڈ پروسیس بنانے پر پابندیاں (fork اور exec ممنوع ہیں)۔

نیٹ ورک: ایپس TCP/UDP کے ذریعے کسی بھی ریموٹ سرور سے جڑ سکتی ہیں، لیکن localhost تک رسائی محدود ہے — دیگر ایپس آپ کی ایپ کے اندر کسی سرور سے منسلک نہیں ہو سکتیں (ڈیبگ بلڈز کے علاوہ)۔ App Store ایپس کے لیے multicast اور broadcast UDP بھی بند ہے۔

ہارڈویئر وسائل: کیمرہ، مائیکروفون، جیو لوکیشن، Bluetooth اور HealthKit تک رسائی کے لیے سسٹم ڈائیلاگ کے ذریعے صارف کی واضح اجازت درکار ہے۔ ہر قسم کے وسیلے کے لیے iOS الگ entitlement اور وجہ کی وضاحت والی Info.plist کلید (NSPhotoLibraryUsageDescription، NSCameraUsageDescription) استعمال کرتا ہے۔ Info.plist میں وجہ کی وضاحت کے بغیر اجازت مانگنے سے ایپ بند ہو جاتی ہے۔

  • متحرک کوڈ — ممنوع: WebView میں JS کے لیے JavaScriptCore، لیکن صوابدیدی مشین کوڈ نہیں
  • چائلڈ پروسیس — fork، exec اور system Sandbox سے دستیاب نہیں
  • ڈیوائسز تک رسائی — کیمرہ، مائیکروفون اور GPS کے لیے سسٹم ڈائیلاگ درکار
  • لوکل نیٹ ورک — App Store کے لیے multicast اور broadcast UDP بند
  • خفیہ کاری کی چابیاں — Keychain دستیاب ہے، لیکن صرف اپنی ایپ کے لیے (App Group کے لیے kSecAttrAccessGroup)

اکثر پوچھے جانے والے سوالات

iOS میں Sandbox کیا ہے؟

Sandbox iOS ایپس کے لیے ایک الگ تھلگ رن ٹائم ماحول ہے جو فائل سسٹم، نیٹ ورک اور دیگر ایپس کے ڈیٹا تک رسائی کو محدود کرتا ہے۔ ہر ایپ کا ایک منفرد Sandbox کنٹینر ہوتا ہے، جس کی رسائی Sandbox.kext کے ذریعے iOS کرنل کی سطح پر کنٹرول ہوتی ہے۔

ایپ کے Sandbox میں کون سی فائلیں دستیاب ہیں؟

ایپ کے لیے دستیاب: Documents (صارف کا ڈیٹا)، Library (Caches، Preferences، Application Support)، tmp (عارضی فائلیں) اور Bundle (صرف پڑھنے کے لیے)۔ App Group ڈائریکٹری ایک ہی ڈویلپر گروپ کی ایپس کے لیے دستیاب ہے۔

کسی دوسری ایپ کی فائلوں تک رسائی کیسے حاصل کی جائے؟

UIDocumentPickerViewController کے ذریعے — صارف سسٹم انٹرفیس کے ذریعے فائل منتخب کرتا ہے۔ iOS ایک Security-Scoped URL فراہم کرتا ہے، جو stopAccessingSecurityScopedResource کو کال کرنے تک دستیاب رہتا ہے۔ متبادل — ایپس کے درمیان ڈیٹا منتقل کرنے کے لیے Share Extension۔

Security-Scoped Bookmark کیا ہے؟

Security-Scoped Bookmark ایک Data ہے جو ایپ لانچ کے درمیان Sandbox سے باہر کی فائل تک رسائی برقرار رکھتا ہے۔ یہ bookmarkData کے ذریعے Security-Scoped URL (UIDocumentPicker سے حاصل کردہ) سے بنتا ہے۔ اگلی لانچ پر بک مارک URLByResolvingBookmarkData کے ذریعے بحال کیا جاتا ہے۔

کیا iOS میں Sandbox غیر فعال کیا جا سکتا ہے؟

نہیں، App Store ایپس کے لیے Sandbox کو غیر فعال نہیں کیا جا سکتا۔ جیل بریک شدہ ڈیوائسز پر اسے غیر فعال کرنا ممکن ہے، لیکن یہ App Store پر اشاعت کے ساتھ مطابقت نہیں رکھتا۔ ڈویلپرز سمیولیٹر پر Sandbox کے بغیر ٹیسٹ کر سکتے ہیں، لیکن حقیقی ڈیوائسز ہمیشہ Sandbox نافذ کرتی ہیں۔

خلاصہ

  • Sandbox — iOS کا بنیادی سیکیورٹی نظام جو Mandatory Access Control کے ساتھ ہر ایپ کو کرنل کی سطح پر الگ تھلگ کرتا ہے۔
  • Sandbox ساخت میں Documents، Library، tmp اور Bundle ڈائریکٹریاں شامل ہیں جن کے رسائی حقوق اور بیک اپ پالیسیاں مختلف ہیں۔
  • براہ راست رسائی دیگر ایپس کے فائل سسٹم تک مکمل طور پر بند ہے — صرف UIDocumentPicker اور App Groups جائز ہیں۔
  • Security-Scoped Bookmarks سسٹم انٹرفیسز کے ذریعے حاصل کردہ Sandbox سے باہر کی فائلوں تک مستقل رسائی فراہم کرتے ہیں۔
  • App Groups ایک ڈویلپر کی ایپس اور ایکسٹینشنز کے مجموعے کے لیے مشترکہ Sandbox جگہ بناتے ہیں۔
  • Sandbox حدود میں متحرک کوڈ، چائلڈ پروسیس، multicast نیٹ ورک پر پابندی اور ہارڈویئر وسائل کے لیے لازمی سسٹم ڈائیلاگ شامل ہیں۔
  • تمام App Store ایپس Sandbox میں چلتی ہیں — یہ iOS کی اختیاری نہیں بلکہ لازمی آرکیٹیکچرل خصوصیت ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں