মোবাইল ডেভেলপমেন্টে App Sandbox — এটি কী, প্রক্রিয়া এবং কাজের নীতি

লেখক: IT Sectr প্রকাশিত: 2026-05-18 পড়ার সময়: 8 মিনিট

App Sandbox হল একটি বিচ্ছিন্নকরণ প্রক্রিয়া যা অ্যাপ্লিকেশনের ফাইল সিস্টেম, অন্যান্য অ্যাপ্লিকেশনের ডেটা এবং অপারেটিং সিস্টেমের সংস্থানগুলিতে অ্যাক্সেস সীমাবদ্ধ করে। প্রতিটি অ্যাপ্লিকেশন নিজস্ব বিচ্ছিন্ন পরিবেশে ন্যূনতম সুবিধা নিয়ে চলে, অনুমতির মাধ্যমে অতিরিক্ত ক্ষমতাগুলিতে অ্যাক্সেসের অনুরোধ করে। Apple Security Documentation (2025) অনুসারে, Sandbox মোবাইল প্ল্যাটফর্মে ডেটা সুরক্ষার একটি মৌলিক উপাদান। App Sandbox একটি পৃথক অ্যাপ্লিকেশন আপস করা হলেও ব্যবহারকারীর ডেটাতে অননুমোদিত অ্যাক্সেস প্রতিরোধ করে।

মূল বিষয়

  • App Sandbox — অ্যাপ্লিকেশন বিচ্ছিন্নকরণ প্রক্রিয়া, অপারেটিং সিস্টেম স্তরে ফাইল সিস্টেম, প্রক্রিয়া এবং অন্যান্য অ্যাপ্লিকেশনের ডেটাতে অ্যাক্সেস সীমাবদ্ধ করে।
  • কাজের নীতি — প্রতিটি অ্যাপ্লিকেশন সীমিত অনুমতি সহ নিজস্ব ডিরেক্টরি পায় এবং বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণ (MAC) এর মাধ্যমে ন্যূনতম সুবিধা নিয়ে চলে।
  • iOS — কার্নেল স্তরে কঠোর বিচ্ছিন্নতা ব্যবহার করে: প্রতিটি অ্যাপ্লিকেশন অনন্য UID সহ নিজস্ব chroot-সদৃশ পরিবেশে কাজ করে।
  • Android — SELinux এবং UID পৃথকীকরণের মাধ্যমে বিচ্ছিন্নতা প্রয়োগ করে, প্রতিটি অ্যাপ্লিকেশন নিজস্ব প্রক্রিয়া এবং ডেটা সহ একটি পৃথক Linux ব্যবহারকারী হিসাবে চলে।
  • ব্যতিক্রম — ভাগ করা সংস্থানগুলি (পরিচিতি, ছবি, অবস্থান) অ্যাক্সেস কেবল স্পষ্ট ব্যবহারকারী সম্মতিতে সিস্টেম API-এর মাধ্যমে সম্ভব।

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), যাতে অ্যাক্সেসের জন্য অতিরিক্ত অনুমতির প্রয়োজন হয় না।

প্রক্রিয়া এবং UID বিচ্ছিন্নতা

Android-এ, প্রতিটি অ্যাপ্লিকেশন একটি অনন্য UID (ব্যবহারকারী ID) সহ একটি পৃথক Linux প্রক্রিয়া হিসাবে চলে। UID অ্যাপ্লিকেশন ইনস্টল করার সময় নির্ধারিত হয় এবং তার পুরো জীবনচক্র জুড়ে অপরিবর্তিত থাকে। বিভিন্ন UID-এর প্রক্রিয়াগুলি কার্নেল স্তরে একে অপরের থেকে বিচ্ছিন্ন থাকে — তারা একে অপরের মেমরি বা ফাইলগুলিতে অ্যাক্সেস করতে পারে না। iOS-এ XNU কার্নেল এবং এর সুরক্ষা ব্যবস্থার মাধ্যমে একটি অনুরূপ প্রক্রিয়া কাজ করে।

Android-এ সুরক্ষার একটি অতিরিক্ত স্তর SELinux (Security-Enhanced Linux) দ্বারা Android 4.3 থেকে enforcing মোডে সরবরাহ করা হয়। SELinux বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণ (MAC) প্রয়োগ করে: প্রতিটি প্রক্রিয়া ক্রিয়া ফাইল মালিকের অনুমতি নির্বিশেষে নিরাপত্তা নীতির বিপরীতে পরীক্ষা করা হয়। এমনকি যদি কোনও অ্যাপ্লিকেশন UID root নিয়ে চলে, SELinux নির্দিষ্ট সংস্থানগুলিতে অ্যাক্সেস ব্লক করতে পারে।

iOS-এ স্যান্ডবক্স

iOS স্যান্ডবক্সকে মোবাইল অপারেটিং সিস্টেমের মধ্যে সবচেয়ে কঠোর বলে মনে করা হয়। প্রতিটি অ্যাপ্লিকেশন কন্টেইনার স্তরে বিচ্ছিন্ন — ফাইল সিস্টেমের একটি সুরক্ষিত এলাকা যা অন্যান্য অ্যাপ্লিকেশন অ্যাক্সেস করতে পারে না। iOS Sandbox Kernel Extension (Sandbox.kext) এর মাধ্যমে বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণ এবং বর্ধিত সুবিধা প্রদানের জন্য entitlement প্রক্রিয়ার সংমিশ্রণ ব্যবহার করে।

iOS কন্টেইনার কাঠামো

iOS অ্যাপ্লিকেশন কন্টেইনারে বিভিন্ন অ্যাক্সেস স্তরের সাথে বেশ কয়েকটি ডিরেক্টরি থাকে। Documents — ব্যবহারকারী ডেটার জন্য যা iCloud এবং iTunes-এর মাধ্যমে ব্যাকআপের সময় সংরক্ষিত হয়। Library — কনফিগারেশন এবং ক্যাশে ফাইলগুলির জন্য। tmp — অস্থায়ী ডেটার জন্য যা সিস্টেম যেকোনো সময় মুছে ফেলতে পারে। AppName.app — অ্যাপ্লিকেশন বান্ডল নিজেই, যা কেবল-পঠনযোগ্য।

অন্যান্য অ্যাপ্লিকেশনের ডেটাতে অ্যাক্সেস কঠোরভাবে নিষিদ্ধ। iOS অন্য অ্যাপ্লিকেশনের কন্টেইনার থেকে ফাইল পড়ার জন্য API সরবরাহ করে না। ডেটা ভাগ করার একমাত্র উপায় সিস্টেম প্রক্রিয়ার মাধ্যমে: ভাগ করার জন্য UIActivityViewController, ক্লিপবোর্ডের জন্য UIPasteboard, একই ডেভেলপারের অ্যাপ্লিকেশনের জন্য App Groups। এই প্রক্রিয়াগুলির প্রতিটি অপারেটিং সিস্টেমের নিয়ন্ত্রণে কাজ করে।

iOS-এ Entitlements এবং App Sandbox

স্ট্যান্ডার্ড স্যান্ডবক্সের বাইরে বর্ধিত ক্ষমতাগুলি Entitlements — ডিজিটাল স্বাক্ষরের মাধ্যমে সরবরাহ করা হয় যা অ্যাপ্লিকেশনের কোড স্বাক্ষরে যুক্ত করা হয়। উদাহরণস্বরূপ, entitlement com.apple.security.application-groups একই গ্রুপের অ্যাপ্লিকেশনগুলিকে একটি ভাগ করা কন্টেইনার রাখার অনুমতি দেয়। push বিজ্ঞপ্তি, iCloud, Apple Pay — এই সমস্ত বৈশিষ্ট্যগুলির জন্য সংশ্লিষ্ট entitlements প্রয়োজন।

এটি লক্ষ্য করা গুরুত্বপূর্ণ যে iOS-এ entitlements অনুমতির মতো নয়। অনুমতিগুলি রানটাইমে ব্যবহারকারীর কাছ থেকে অনুরোধ করা হয় (যেমন, ক্যামেরা অ্যাক্সেস), যেখানে entitlements ইনস্টলেশনের সময় সিস্টেম দ্বারা পরীক্ষা করা হয় এবং ব্যবহারকারী দ্বারা পরিবর্তন করা যায় না। Entitlements ডেভেলপার দ্বারা সংজ্ঞায়িত করা হয় এবং অ্যাপ পর্যালোচনা প্রক্রিয়ার সময় Apple দ্বারা স্বাক্ষরিত হয়।

Android-এ স্যান্ডবক্স

Android Linux কার্নেলের উপর ভিত্তি করে একটি বহু-স্তরীয় স্যান্ডবক্স মডেল ব্যবহার করে। প্রতিটি অ্যাপ্লিকেশন একটি অনন্য UID সহ একটি পৃথক Linux ব্যবহারকারী হিসাবে চলে, যা প্রক্রিয়া এবং ফাইল স্তরে মৌলিক বিচ্ছিন্নতা সরবরাহ করে। অতিরিক্ত স্তরগুলির মধ্যে বাধ্যতামূলক অ্যাক্সেস নিয়ন্ত্রণের জন্য SELinux এবং সিস্টেম API-তে অ্যাক্সেস নিয়ন্ত্রণের জন্য অনুমতি অন্তর্ভুক্ত রয়েছে।

SELinux এবং UID বিচ্ছিন্নতা

Android-এ SELinux enforcing মোডে চলে, যার অর্থ নিরাপত্তা নীতিগুলির বাধ্যতামূলক প্রয়োগ। প্রতিটি অ্যাপ্লিকেশনকে একটি নিরাপত্তা প্রসঙ্গ (security context) বরাদ্দ করা হয় এবং সমস্ত সিস্টেম কল নীতির বিপরীতে পরীক্ষা করা হয়। SELinux Android-এ 1500-এর বেশি নিয়ম রয়েছে যা ফাইল সিস্টেম, আন্তঃ-প্রক্রিয়া যোগাযোগ, সকেট এবং সিস্টেম কল কভার করে।

UID বিচ্ছিন্নতা একটি অ্যাপ্লিকেশনকে অন্য অ্যাপ্লিকেশনের ফাইলগুলিতে সরাসরি অ্যাক্সেস থেকে রোধ করে। উদাহরণস্বরূপ, UID 10001 সহ অ্যাপ্লিকেশন A, UID 10002 সহ অ্যাপ্লিকেশন B-এর ফাইল পড়তে পারে না, এমনকি যদি উভয়ই একই ফোন ব্যবহারকারী অ্যাকাউন্টের অধীনে চলে। এটি Linux-এ বহু-ব্যবহারকারী নিরাপত্তার মৌলিক নীতি, যা মোবাইল ডিভাইসের জন্য অভিযোজিত।

java
// 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 কী?

App Sandbox — একটি বিচ্ছিন্নকরণ ব্যবস্থা যেখানে প্রতিটি অ্যাপ্লিকেশন নিজস্ব বিচ্ছিন্ন স্থানে কাজ করে, স্পষ্ট ব্যবহারকারী অনুমতি ছাড়া অন্যান্য অ্যাপ্লিকেশনের ডেটাতে অ্যাক্সেস না রেখে।

iOS এবং Android-এ স্যান্ডবক্সের পার্থক্য কী?

iOS Sandbox.kext এবং entitlements-এর মাধ্যমে কঠোর কন্টেইনার বিচ্ছিন্নতা ব্যবহার করে। Android Linux কার্নেল স্তরে UID পৃথকীকরণ এবং SELinux ব্যবহার করে। নীতি একই, কিন্তু বাস্তবায়ন এবং নমনীয়তা ভিন্ন।

অ্যাপ্লিকেশন স্যান্ডবক্স বাইপাস করা সম্ভব?

স্যান্ডবক্স বাইপাস করা কেবল জেলব্রেক (iOS) বা root অ্যাক্সেস (Android) এর মাধ্যমে সম্ভব। OS পরিবর্তন ছাড়া স্ট্যান্ডার্ড ডিভাইসে, বৈধ API-এর মাধ্যমে স্যান্ডবক্স বাইপাস করা অসম্ভব।

অ্যাপ্লিকেশনগুলি স্যান্ডবক্সের মাধ্যমে কীভাবে ডেটা বিনিময় করে?

iOS UIActivityViewController এবং App Groups ব্যবহার করে। Android ContentProvider, FileProvider এবং Intents ব্যবহার করে। সমস্ত প্রক্রিয়া নিরাপত্তা নিয়ন্ত্রণ সহ সিস্টেম API-এর মাধ্যমে চলে।

Sandbox-এ ন্যূনতম সুবিধার নীতি কী?

নীতির অর্থ হল একটি অ্যাপ্লিকেশন তার অপারেশনের জন্য কেবল প্রয়োজনীয় অনুমতি পায়। অতিরিক্ত সংস্থানগুলিতে অ্যাক্সেস অনুমতির মাধ্যমে অনুরোধ করা হয় এবং ব্যবহারকারী দ্বারা মঞ্জুর করা হয়।

সারসংক্ষেপ

  • App Sandbox — মোবাইল OS-এর মৌলিক নিরাপত্তা প্রক্রিয়া, ফাইল সিস্টেম এবং প্রক্রিয়া স্তরে অ্যাপ্লিকেশনগুলিকে একে অপরের থেকে বিচ্ছিন্ন করে।
  • কাজের নীতি — প্রতিটি অ্যাপ্লিকেশন নিজস্ব UID, বিচ্ছিন্ন ডিরেক্টরি এবং কার্নেল-স্তরের অ্যাক্সেস নিয়ন্ত্রণ সহ ন্যূনতম সুবিধা পায়।
  • iOS — Sandbox.kext-এর মাধ্যমে কঠোর কন্টেইনার বিচ্ছিন্নতা, entitlements-এর মাধ্যমে বর্ধিত অধিকার, সিস্টেম নিয়ন্ত্রকদের মাধ্যমে ডেটা ভাগ করা।
  • Android — Linux UID পৃথকীকরণ, enforcing মোডে SELinux, নিরাপদ ভাগ করে নেওয়ার জন্য ContentProvider এবং FileProvider।
  • ব্যতিক্রম — সিস্টেম পরিষেবা (AccessibilityService) এবং ব্যবহারকারীর অনুমতি (পরিচিতি, মাইক্রোফোন) আংশিকভাবে বিচ্ছিন্নতা বাইপাস করতে পারে।
  • সীমাবদ্ধতা — স্যান্ডবক্স root/jailbreak বা অনুমোদিত API-এর মাধ্যমে বৈধ ডেটা সংগ্রহ থেকে রক্ষা করে না।
  • কার্যকারিতা — Android Security Report 2024 অনুসারে, 99% এর বেশি আন্তঃ-অ্যাপ্লিকেশন অ্যাক্সেস প্রচেষ্টা প্রতিরোধ করে।

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন