برنامه نویس اندرویدم ولی : «بدان جا رسید علم من، که دانستم هیچ نمی دانم»
اصول و پایه یک اپلیکیشن اندرویدی - قسمت 1 - امنیت
همونطور که می دونید برنامه های اندرویدی میتونن با زبانهای کاتلین، جاوا و C++ نوشته بشند. که در این بین، ابزارهایی که به اسم Android SDK tools معروفند کد شما رو به همراه هر منبع دیگه ای که دارید (فایل های عکس، ویدئو، صوت و ...) باهمدیگه کامپایل میکنن و در یک فایلی به اسم APK یا همون AndroidPackage قرار میدن. یک فایل APK حاوی تمام محتویی هست که در اپلیکیشنی که قرار روی گوشی کاربر نصب بشه داره .
هر برنامه اندرویدی در SandBox امنیتی خودش و با ویژگی های امنیتی زیر محافظت میشه :
1- سیستم عامل اندروید در واقع یک سیستم عامل چند کاربره لینوکس هست که در اون هر اپلیکیشن یک کاربر جداگانه محسوب میشه و به این ترتیب هر اپلیکیشن جدا از اپلیکیشن دیگه و در فرآیند ماشین مجازی (VM) مخصوص به خودش اجرا میشه و از دسترسی به سایر قابلیت های اپلیکیشن های دیگه محدود هست.
بذارید یکم ساده تر توضیح بدم :)
فرض کنید که یک سیستم عامل لینوکس روی کامپیوترتون نصب دارید که شما و چندتا دیگه از دوستاتون هرکدوم یک حساب کاربری روی اون کامپیوتر داره. خب طبیعتا اولین اصل امنیتی این هست که هرکابر جدا از مواردی که مشترک هست فقط به منابع و فایل های خودش دسترسی داشته باشه و نتونه مثلا وارد پوشه شخصی شما بشه? .
اندروید دقیقا از یک همچین مکانیزمی برای ایمن کردن اپلیکیشن ها استفاده میکنه، به این صورت که هر اپلیکیشن معادل یک کاربر میشه و فقط به منابع خودش دسترسی داره (البته اگر گوشی رو روت نکرده باشید?)
خب اینجوری به عنوان یک کاربر خیالتون راحت هست که اگر خدایی نکرده یک موقعی اپلیکیشن مخرب روی گوشی تون نصب کردید، اون اپلیکیشن دیگه نمی تونه به اطلاعات یک اپلیکیشن دیگه (مثلا تلگرام یا واتساپ که برای خیلی ها به لحاظ حریم شخصی مهم هستند) دسترسی داشته باشه.
شاید برای بعضی هاتون این سوال پیش بیاد که با این اوصاف چطور بعضی از اپلیکیشن ها داده هاشون رو با هم به اشتراک میذارند؟؟!!!
خب جواب این سوال راحته !!!!!
با اشتراک گذاری ?
هر اپلیکیشن مشخص میکنه که چه اپلیکیشن هایی می تونند از منابع و داده های اون اپلیکیشن و تا چه حدی استفاده کنند.
2- سیستم عامل به هر اپلیکیشن یک شناسه منحصر به فرد (UID که مخفف UserID هست) اختصاص میده که این شناسه فقط توسط سیستم عامل قابل شناسایی و از دید اپلیکیشن مخفی هست. سیستم عامل از این شناسه برای کنترل کردن سطح دسترسی هر اپلیکیشن به منابع (دوربین، GPS، فایل و...) استفاده می کنه و از این طریق سطح دسترسی هر اپلیکیشن مشخص میشه.
3- هر اپلیکیشنی فرایند مخصوص به خودش رو داره و سیستم عامل تنها زمانی که اپلیکیشن نیاز به اجرا کردن کامپوننت های مخوصص به خودش (Activity, Service, Broadcast, Content Provider) رو داشته باشه اونها رو اجرا میکنه، در غیر این صورت اگر به اون فرایند یا پروسه برای مدت زیادی نیازی نباشه یا مموری نیاز به بازیابی داشته باشه، فرایند اون اپلیکیشن رو ShutDown میکنه.
منبع : Android Developer
مطلبی دیگر از این انتشارات
حل مشکل اتصال به شبکه (مقصد فاقد TLS) و انتقال ترافیک cleartext در اندروید با API level 28
مطلبی دیگر از این انتشارات
تست و CI در برنامه نویسی اندروید
مطلبی دیگر از این انتشارات
سوالات مصاحبه اندرویدی