App Sandbox एक आइसोलेशन तंत्र है जो एप्लिकेशन की फ़ाइल सिस्टम, अन्य एप्लिकेशन के डेटा और ऑपरेटिंग सिस्टम के संसाधनों तक पहुँच को प्रतिबंधित करता है। प्रत्येक एप्लिकेशन न्यूनतम विशेषाधिकारों के साथ अपने स्वयं के पृथक वातावरण में चलता है, अनुमतियों के माध्यम से अतिरिक्त क्षमताओं तक पहुँच का अनुरोध करता है। Apple Security Documentation (2025) के अनुसार, Sandbox मोबाइल प्लेटफ़ॉर्म पर डेटा सुरक्षा का एक मूलभूत तत्व है। App Sandbox किसी व्यक्तिगत एप्लिकेशन से समझौता होने पर भी उपयोगकर्ता डेटा तक अनधिकृत पहुँच को रोकता है।
मुख्य बिंदु
App Sandbox — एक आर्किटेक्चरल सुरक्षा तंत्र है जो प्रत्येक एप्लिकेशन को सिस्टम संसाधनों तक सीमित पहुँच के साथ अपने स्वयं के निष्पादन वातावरण में पृथक करता है। यह शब्द बच्चों के सैंडबॉक्स की अवधारणा से आया है — एक सुरक्षित स्थान जहाँ बच्चा खतरनाक वस्तुओं तक पहुँच के बिना खेल सकता है। इसी प्रकार, एक एप्लिकेशन अन्य एप्लिकेशन के डेटा या महत्वपूर्ण सिस्टम घटकों तक पहुँच के बिना प्रतिबंधित वातावरण में चलता है।
Sandbox का मुख्य उद्देश्य न्यूनतम विशेषाधिकारों के सिद्धांत का कार्यान्वयन है: प्रत्येक एप्लिकेशन को अपने घोषित कार्यों को करने के लिए केवल आवश्यक अधिकार मिलते हैं। भले ही कोई हमलावर किसी एप्लिकेशन में कमज़ोरी ढूँढ ले, सैंडबॉक्स अन्य एप्लिकेशन के डेटा, फ़ोटो, संपर्क या सिस्टम फ़ाइलों तक पहुँच को रोकता है। क्षति एक ही एप्लिकेशन की सीमा तक सीमित होती है।
मोबाइल ऑपरेटिंग सिस्टम ने डेस्कटॉप से पहले सैंडबॉक्स लागू किए। iOS ने पहले SDK रिलीज़ (2008) से Sandbox का उपयोग किया है, Android ने संस्करण 1.0 (2008) से, Android 4.3 (2013) में SELinux के माध्यम से सुदृढ़ीकरण के साथ। डेस्कटॉप सिस्टम पकड़ रहे हैं: macOS ने 2012 में Sandbox शुरू किया, Windows ने Windows 8 में पृथक UWP एप्लिकेशन शुरू किए।
सैंडबॉक्स में आइसोलेशन ऑपरेटिंग सिस्टम के विभिन्न स्तरों पर कई तंत्रों के संयोजन के माध्यम से प्राप्त किया जाता है। फ़ाइल सिस्टम स्तर पर, प्रत्येक एप्लिकेशन को अपनी स्वयं की संरक्षित निर्देशिका आवंटित की जाती है जिस तक केवल उसकी पूर्ण पहुँच होती है। प्रक्रिया स्तर पर, प्रत्येक एप्लिकेशन के लिए एक अद्वितीय उपयोगकर्ता पहचानकर्ता (UID) का उपयोग किया जाता है। कर्नेल स्तर पर, SELinux या समान तंत्रों के माध्यम से अनिवार्य अभिगम नियंत्रण (MAC) लागू किया जाता है।
प्रत्येक एप्लिकेशन डिवाइस की फ़ाइल सिस्टम पर अपनी स्वयं की रूट निर्देशिका प्राप्त करता है। iOS में, यह निर्देशिका /var/mobile/Containers/Data/Application/{UUID} है, Android में — /data/data/{package_name}। एप्लिकेशन केवल इस निर्देशिका के अंदर फ़ाइलें पढ़ और लिख सकता है। इस निर्देशिका के बाहर किसी भी फ़ाइल तक पहुँच ऑपरेटिंग सिस्टम कर्नेल स्तर पर अवरुद्ध कर दी जाती है।
सिस्टम सीमित पहुँच के साथ विशेष साझा निर्देशिकाएँ भी प्रदान करता है। iOS में, ये उपयोगकर्ता डेटा के लिए Documents निर्देशिका, सेटिंग्स के लिए Library और अस्थायी फ़ाइलों के लिए Caches हैं। Android में — आंतरिक संग्रहण (getFilesDir) और बाहरी संग्रहण (getExternalFilesDir), जिन तक पहुँच के लिए अतिरिक्त अनुमतियों की आवश्यकता नहीं होती।
Android में, प्रत्येक एप्लिकेशन एक अद्वितीय UID (उपयोगकर्ता ID) के साथ एक अलग Linux प्रक्रिया के रूप में चलता है। UID एप्लिकेशन इंस्टॉल होने पर निर्धारित किया जाता है और अपने पूरे जीवनचक्र में अपरिवर्तित रहता है। विभिन्न UID वाली प्रक्रियाएँ कर्नेल स्तर पर एक-दूसरे से पृथक होती हैं — वे एक-दूसरे की मेमोरी या फ़ाइलों तक पहुँच नहीं सकतीं। iOS में XNU कर्नेल और इसकी सुरक्षा प्रणाली के माध्यम से एक समान तंत्र काम करता है।
Android में सुरक्षा की एक अतिरिक्त परत SELinux (Security-Enhanced Linux) द्वारा Android 4.3 से enforcing मोड में प्रदान की जाती है। SELinux अनिवार्य अभिगम नियंत्रण (MAC) लागू करता है: प्रत्येक प्रक्रिया कार्रवाई को फ़ाइल स्वामी की अनुमतियों की परवाह किए बिना सुरक्षा नीति के विरुद्ध जाँचा जाता है। भले ही कोई एप्लिकेशन UID root के साथ चले, SELinux कुछ संसाधनों तक पहुँच को अवरुद्ध कर सकता है।
iOS सैंडबॉक्स को मोबाइल ऑपरेटिंग सिस्टम में सबसे सख्त में से एक माना जाता है। प्रत्येक एप्लिकेशन कंटेनर स्तर पर पृथक होता है — फ़ाइल सिस्टम का एक संरक्षित क्षेत्र जिस तक अन्य एप्लिकेशन पहुँच नहीं सकते। iOS Sandbox Kernel Extension (Sandbox.kext) के माध्यम से अनिवार्य अभिगम नियंत्रण और विस्तारित विशेषाधिकार प्रदान करने के लिए entitlement तंत्र के संयोजन का उपयोग करता है।
iOS एप्लिकेशन कंटेनर में विभिन्न पहुँच स्तरों वाली कई निर्देशिकाएँ होती हैं। Documents — उपयोगकर्ता डेटा के लिए जो iCloud और iTunes के माध्यम से बैकअप के दौरान संरक्षित होता है। Library — कॉन्फ़िगरेशन और कैश फ़ाइलों के लिए। tmp — अस्थायी डेटा के लिए जिसे सिस्टम किसी भी समय हटा सकता है। AppName.app — एप्लिकेशन बंडल स्वयं, जो केवल-पढ़ने योग्य है।
अन्य एप्लिकेशन के डेटा तक पहुँच सख्त वर्जित है। iOS किसी अन्य एप्लिकेशन के कंटेनर से फ़ाइलें पढ़ने के लिए API प्रदान नहीं करता। डेटा साझा करने का एकमात्र तरीका सिस्टम तंत्रों के माध्यम से है: साझा करने के लिए UIActivityViewController, क्लिपबोर्ड के लिए UIPasteboard, एक ही डेवलपर के एप्लिकेशन के लिए App Groups। ये सभी तंत्र ऑपरेटिंग सिस्टम के नियंत्रण में काम करते हैं।
मानक सैंडबॉक्स से परे विस्तारित क्षमताएँ Entitlements के माध्यम से प्रदान की जाती हैं — डिजिटल हस्ताक्षर जो एप्लिकेशन के कोड हस्ताक्षर में जोड़े जाते हैं। उदाहरण के लिए, entitlement com.apple.security.application-groups एक ही समूह के एप्लिकेशन को साझा कंटेनर रखने की अनुमति देता है। push सूचनाएँ, iCloud, Apple Pay — इन सभी सुविधाओं के लिए संबंधित entitlements की आवश्यकता होती है।
यह ध्यान रखना महत्वपूर्ण है कि iOS में entitlements अनुमतियों के समान नहीं हैं। अनुमतियाँ रनटाइम पर उपयोगकर्ता से अनुरोध की जाती हैं (जैसे, कैमरा एक्सेस), जबकि entitlements की जाँच सिस्टम द्वारा इंस्टॉलेशन के समय की जाती है और उपयोगकर्ता द्वारा बदली नहीं जा सकती। Entitlements डेवलपर द्वारा परिभाषित किए जाते हैं और ऐप समीक्षा प्रक्रिया के दौरान Apple द्वारा हस्ताक्षरित किए जाते हैं।
Android Linux कर्नेल पर आधारित बहु-स्तरीय सैंडबॉक्स मॉडल का उपयोग करता है। प्रत्येक एप्लिकेशन एक अद्वितीय UID के साथ एक अलग Linux उपयोगकर्ता के रूप में चलता है, जो प्रक्रिया और फ़ाइल स्तर पर बुनियादी आइसोलेशन प्रदान करता है। अतिरिक्त स्तरों में अनिवार्य अभिगम नियंत्रण के लिए SELinux और सिस्टम API तक पहुँच को नियंत्रित करने के लिए अनुमतियाँ शामिल हैं।
Android में SELinux enforcing मोड में चलता है, जिसका अर्थ है सुरक्षा नीतियों का अनिवार्य प्रवर्तन। प्रत्येक एप्लिकेशन को एक सुरक्षा संदर्भ (security context) सौंपा जाता है, और सभी सिस्टम कॉल की नीति के विरुद्ध जाँच की जाती है। SELinux में Android में 1500 से अधिक नियम हैं जो फ़ाइल सिस्टम, अंतर-प्रक्रिया संचार, सॉकेट और सिस्टम कॉल को कवर करते हैं।
UID आइसोलेशन एक एप्लिकेशन को दूसरे एप्लिकेशन की फ़ाइलों तक सीधी पहुँच से रोकता है। उदाहरण के लिए, UID 10001 वाला एप्लिकेशन A, UID 10002 वाले एप्लिकेशन B की फ़ाइलें नहीं पढ़ सकता, भले ही दोनों एक ही फ़ोन उपयोगकर्ता खाते के अंतर्गत चल रहे हों। यह Linux में बहु-उपयोगकर्ता सुरक्षा का मूल सिद्धांत है, जिसे मोबाइल उपकरणों के लिए अनुकूलित किया गया है।
// 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 एक शक्तिशाली सुरक्षा तंत्र है, इसकी मूलभूत सीमाएँ हैं। सैंडबॉक्स क्षैतिज पहुँच (एप्लिकेशन-से-एप्लिकेशन) से बचाता है, लेकिन ऊर्ध्वाधर पहुँच (कर्नेल स्तर पर मैलवेयर या डिवाइस तक भौतिक पहुँच) से नहीं। जेलब्रेक या root पहुँच के साथ, सैंडबॉक्स को बायपास किया जा सकता है क्योंकि हमलावर को सुपरयूज़र विशेषाधिकार मिल जाते हैं।
दूसरी सीमा दुर्भावनापूर्ण अनुमतियाँ हैं। यदि कोई उपयोगकर्ता किसी एप्लिकेशन को संपर्कों और माइक्रोफ़ोन तक पहुँच प्रदान करता है, तो सैंडबॉक्स इस डेटा के संग्रह को नहीं रोक सकता क्योंकि एप्लिकेशन वैध सिस्टम API का उपयोग करता है। इस मामले में सुरक्षा उपयोगकर्ता जागरूकता और App Store और Google Play समीक्षा प्रक्रियाओं के स्तर पर स्थानांतरित हो जाती है।
तीसरी सीमा अंतर-सैंडबॉक्स संपर्क है। कुछ सिस्टम सेवाओं (NotificationListenerService, AccessibilityService) की अन्य एप्लिकेशन के डेटा तक विस्तारित पहुँच होती है। एक हमलावर उपयुक्त अनुमतियाँ प्राप्त करने पर सैंडबॉक्स को बायपास करने के लिए इन सेवाओं का उपयोग कर सकता है। Google और Apple ऐसी सेवाओं के लिए नीतियों को लगातार अपडेट करते हैं।
सीमाओं के बावजूद, सैंडबॉक्स मोबाइल OS का एक महत्वपूर्ण सुरक्षा घटक है। Android Security Report (2024) के अनुसार, सैंडबॉक्स आइसोलेशन 99% से अधिक अंतर-एप्लिकेशन डेटा पहुँच प्रयासों को रोकता है। कोड साइनिंग, ऐप रिव्यू और रनटाइम अनुमतियों के संयोजन में, Sandbox आधुनिक मोबाइल डिवाइस की बहु-स्तरीय सुरक्षा बनाता है।
अक्सर पूछे जाने वाले प्रश्न
App Sandbox — एक आइसोलेशन प्रणाली है जिसमें प्रत्येक एप्लिकेशन अपने स्वयं के पृथक स्थान में काम करता है, बिना स्पष्ट उपयोगकर्ता अनुमति के अन्य एप्लिकेशन के डेटा तक पहुँच नहीं रखता।
iOS Sandbox.kext और entitlements के माध्यम से सख्त कंटेनर आइसोलेशन का उपयोग करता है। Android Linux कर्नेल स्तर पर UID पृथक्करण और SELinux का उपयोग करता है। सिद्धांत समान है, लेकिन कार्यान्वयन और लचीलापन भिन्न है।
सैंडबॉक्स को बायपास करना केवल जेलब्रेक (iOS) या root पहुँच (Android) के साथ संभव है। OS संशोधन के बिना मानक उपकरणों पर, वैध API के माध्यम से सैंडबॉक्स को बायपास करना असंभव है।
iOS UIActivityViewController और App Groups का उपयोग करता है। Android ContentProvider, FileProvider और Intents का उपयोग करता है। सभी तंत्र सुरक्षा नियंत्रण के साथ सिस्टम API के माध्यम से काम करते हैं।
सिद्धांत का अर्थ है कि एक एप्लिकेशन को अपने संचालन के लिए केवल आवश्यक अनुमतियाँ मिलती हैं। अतिरिक्त संसाधनों तक पहुँच अनुमतियों के माध्यम से अनुरोध की जाती है और उपयोगकर्ता द्वारा प्रदान की जाती है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें