وجود تطبيقين على الهاتف لا يمنحهما تلقائيًا الحق في قراءة الملفات الخاصة لبعضهما. يعمل كل تطبيق Android عادة بهوية Linux UID خاصة، ويستخدم النظام العزل وصلاحياته لتقييد الوصول. لكن فهم Sandbox يحتاج أيضًا معرفة الأبواب التي تفتحها التطبيقات عمدًا للمشاركة. هذه مراجعة عملية للفرق بين العزل الافتراضي والوصول المصرح به، مع الاحتفاظ بقيود المسودة المحررة.
هوية التطبيق تحدد نقطة البداية
يفصل Android هويات التشغيل في الأحوال العادية ويطبق صلاحيات نظام التشغيل على الملفات والموارد. لذلك لا يفترض أن يستطيع تطبيق مثبت حديثًا تصفح مساحة تطبيق آخر الخاصة لمجرد وجودهما على الجهاز. هذا يحد من الوصول المتبادل، لكنه لا يبرر وعدًا بأن العزل يمنع كل ثغرة أو كل تسرب. عند مراجعة مشكلة، اسأل أولًا هل البيانات في مساحة خاصة، أم خرجت عبر مشاركة مقصودة أو واجهة أتاحها التطبيق نفسه؟
قائمة مراجعة
- ميز التخزين الخاص عن الملفات المشتركة في تصميم التطبيق.
- لا تعتبر صلاحية واحدة شرحًا كاملًا لمسار وصول البيانات.
المشاركة تعبر الحدود وفق قواعد
يستخدم المطور Intents و Content Providers واختيار الملفات وآليات مشاركة صريحة لنقل بيانات محددة. مشاركة صورة اختارها المستخدم تختلف عن منح وصول واسع أو مستمر. راجع شروط الواجهة المستقبلة وصلاحيات URI ومدة سريانها، وتحقيق المدخلات قبل التعامل معها. لا تفترض أن كل تطبيق مرسل يقدم بيانات صادقة أو ملفًا مناسبًا. حدد أقل نطاق يلزم للوظيفة، ثم وثق كيف ينتهي حق القراءة وما الذي يحدث عند محاولة استخدامه خارج غرضه.
قائمة مراجعة
- راجع المكونات المصدرة Exported ونقاط الدخول في Manifest.
- اربط كل مشاركة بغرض واضح ونطاق بيانات معلوم.
رفض إذن الكاميرا حالة تستحق الاختبار
السماح بالميكروفون أو الموقع لا يمنح تلقائيًا قراءة رسائل التطبيقات الأخرى، لكنه يظل قرارًا حساسًا يتعلق بالغرض من جمع البيانات. تذكر المسودة أن خيارات مثل الإذن لمرة واحدة أو أثناء الاستخدام والموقع التقريبي تختلف حسب الإصدار. لذلك افحص السلوك على مستويات Android التي يستهدفها تطبيقك، ولا تكتب تعليمات تفترض واجهة أذونات واحدة للجميع. اختبر أيضًا رفض الإذن، وتأكد أن الوظائف التي لا تحتاجه لا تطلبه بلا سبب.
قائمة مراجعة
- اشرح للمستخدم علاقة الإذن بالوظيفة عند الحاجة إليه.
- سجل اختلاف السلوك حسب إصدار النظام المستهدف.
جرّب تطبيقين مملوكين لتوضيح الفرق
في بيئة تجريبية، اجعل تطبيقًا يحفظ ملفًا خاصًا ثم راقب محاولة تطبيق ثانٍ الوصول إليه دون واجهة مشاركة. بعد ذلك أتح مشاركة محددة عبر Content Provider بصلاحيات واضحة وقارن السلوك. لا نعرض هنا نتائج تجربة فعلية، بل طريقة لتوضيح الفرق بين الوصول الافتراضي والمشاركة المخطط لها. استخدم بيانات وهمية ولا تستخدم صلاحيات الجذر في اختبار يفترض أنه يمثل مستخدمًا عاديًا، ولا تطبق السيناريو على تطبيقات الآخرين دون تفويض.
خطوات عملية
- ثبت إصدار النظام وإعدادات التطبيقين في محضر التجربة.
- قارن الوصول قبل المشاركة وبعدها وعند رفض الإذن.
- اختبر ملفًا غير متوقع ضمن مدخلات التجربة المسموح بها.
راجع المنافذ التي قد تضعف العزل
قد يعرّض مكون مصدر أو رابط عميق غير محمي بيانات لا يقصد المطور كشفها، كما أن العزل لا يعالج كل ضعف محتمل في واجهات النظام أو المكتبات. راجع نقاط الدخول والملفات المشتركة وسياسات الشبكة والتحقق من هوية المرسل ومدخلاته بحسب وظيفة الواجهة. اكتب حدود المراجعة بوضوح؛ نجاح تجربة مشاركة واحدة لا يثبت سلامة كل التطبيق، لكنه يمنحك دليلًا محددًا يمكنك البناء عليه.
قائمة مراجعة
- امنع تقديم ملفات حساسة عبر مسارات عامة.
- راجع صلاحيات كل واجهة بدل الاكتفاء باسم Sandbox.
شارك في تقييم ونقاش المقال
رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.
النقاش
جارٍ تحميل التعليقات…