✅نکته های امنیتی در برنامه نویسی اندروید
♦️بخش اول
سیستم عامل #اندروید دارای ویژگی های امنیتی داخلی است که بطور قابل توجهی تعداد و تاثیرات ناشی از مشکلات امنیتی برنامه را کاهش می دهد.
اندروید به گونه ای طراحی شده است که شما بتوانید برنامه های خود را با مجوزهای پیش فرض سیستم عامل و سیستم فایل ایجاد کنید و بدین ترتیب از اتخاذ تصمیم گیری های سخت در مورد #امنیت، دوری کنید.
🔑ویژگی های امنیتی زیر، به شما در ساخت برنامه های ایمن کمک می کنند:
✔️Sandbox برنامه های اندروید، که موجب می شود تا داده های برنامه و کد اجرایی شما از سایر برنامه ها جدا بماند(ایزوله شود).
✔️یک چارچوب کاربردی با ویژگی های متداول و قدرتمند امنیتی مانند: رمزنگاری، مجوزها وIPC ایمن.
✔️فناوری هایی که موجب کاهش خطرات ناشی از مدیریت حافظه می گردند؛ مانند:
➕ASLR: جهت تصادفی کردن آدرس دهی در حافظه(ارائه شده در اندروید نسخه4.0).
➕NX: جهت جلوگیری از اجرای کد در پشته و هیپ(Heap)(ارائه شده در اندروید نسخه2.3).
➕ProPolice: برای جلوگیری از سرریز بافر پشته(ارائه شده در اندروید نسخه1.5).
➕safe_iop: جهت پیشگیری از سرریز اعداد صحیح(ارائه شده در اندروید نسخه1.5).
➕OpenBSD dlmalloc: برای جلوگیری از آسیب پذیری ()double free و حملات به حافظهHeap می باشد.(ارائه شده در اندروید نسخه1.5).
➕OpenBSD calloc: برای جلوگیری از سرریز اعداد صحیح در حین اختصاص حافظه(ارائه شده در اندروید نسخه1.5).
➕Linux mmap_min_addr: یکی از مشکلات مهم امنیتی در لینوکس،
NULL pointers dereferences می باشد که می تواند موجب حملات هکرها گردد(ارائه شده در اندروید نسخه2.3).
➕سیستم فایل رمزنگاری شده که می تواند برای محافظت از داده ها در دستگاه های گم شده یا دزدیده شده، فعال گردد.
➕مجوزهای اعطاشونده توسط کاربر برای محدود کردن دسترسی به ویژگی های سیستم عامل و داده های کاربر.
🔺آشنایی با بهترین روش های امنیتی در اندروید و استفاده همیشگی از آن ها در کدنویسی، موضوعی بسیار مهم می باشد. در بخش های آتی به این موارد می پردازیم.
↩️ادامه دارد...
#Android #Security #Privacy #Permission #Hack #Attack
اقتباس از dynamicClass
🆔 @AndroidStudyChannel
♦️بخش اول
سیستم عامل #اندروید دارای ویژگی های امنیتی داخلی است که بطور قابل توجهی تعداد و تاثیرات ناشی از مشکلات امنیتی برنامه را کاهش می دهد.
اندروید به گونه ای طراحی شده است که شما بتوانید برنامه های خود را با مجوزهای پیش فرض سیستم عامل و سیستم فایل ایجاد کنید و بدین ترتیب از اتخاذ تصمیم گیری های سخت در مورد #امنیت، دوری کنید.
🔑ویژگی های امنیتی زیر، به شما در ساخت برنامه های ایمن کمک می کنند:
✔️Sandbox برنامه های اندروید، که موجب می شود تا داده های برنامه و کد اجرایی شما از سایر برنامه ها جدا بماند(ایزوله شود).
✔️یک چارچوب کاربردی با ویژگی های متداول و قدرتمند امنیتی مانند: رمزنگاری، مجوزها وIPC ایمن.
✔️فناوری هایی که موجب کاهش خطرات ناشی از مدیریت حافظه می گردند؛ مانند:
➕ASLR: جهت تصادفی کردن آدرس دهی در حافظه(ارائه شده در اندروید نسخه4.0).
➕NX: جهت جلوگیری از اجرای کد در پشته و هیپ(Heap)(ارائه شده در اندروید نسخه2.3).
➕ProPolice: برای جلوگیری از سرریز بافر پشته(ارائه شده در اندروید نسخه1.5).
➕safe_iop: جهت پیشگیری از سرریز اعداد صحیح(ارائه شده در اندروید نسخه1.5).
➕OpenBSD dlmalloc: برای جلوگیری از آسیب پذیری ()double free و حملات به حافظهHeap می باشد.(ارائه شده در اندروید نسخه1.5).
➕OpenBSD calloc: برای جلوگیری از سرریز اعداد صحیح در حین اختصاص حافظه(ارائه شده در اندروید نسخه1.5).
➕Linux mmap_min_addr: یکی از مشکلات مهم امنیتی در لینوکس،
NULL pointers dereferences می باشد که می تواند موجب حملات هکرها گردد(ارائه شده در اندروید نسخه2.3).
➕سیستم فایل رمزنگاری شده که می تواند برای محافظت از داده ها در دستگاه های گم شده یا دزدیده شده، فعال گردد.
➕مجوزهای اعطاشونده توسط کاربر برای محدود کردن دسترسی به ویژگی های سیستم عامل و داده های کاربر.
🔺آشنایی با بهترین روش های امنیتی در اندروید و استفاده همیشگی از آن ها در کدنویسی، موضوعی بسیار مهم می باشد. در بخش های آتی به این موارد می پردازیم.
↩️ادامه دارد...
#Android #Security #Privacy #Permission #Hack #Attack
اقتباس از dynamicClass
🆔 @AndroidStudyChannel
✅نکته های امنیتی در برنامه نویسی اندروید
♦️بخش دوم
🔵 ذخیره داده ها
یکی از شایعترین نگرانی های امنیتی در برنامه های اندرویدی، این است که آیا داده های ذخیره شده در دستگاه کاربر، برای سایر برنامه ها قابل دسترسی هستند یا نه؟! سه روش اصلی برای ذخیره داده ها بر روی دستگاه وجود دارد:
1️⃣ فضای ذخیره ساز داخلی
به صورت پیش فرض، فایل هایی که شما بر روی حافظه داخلی دستگاه ایجاد می کنید، فقط از درون برنامه شما قابل دستیابی هستند. سیستم عامل اندروید این سطح حفاظتی را اجرا می کند و برای بیشتر برنامه ها کافی می باشد.
به طور کلی، از حالت های:
MODE_WORLD_WRITEABLE
و
MODE_WORLD_READABLE
برای فایل های IPCخودداری کنید، زیرا این دو روش، امکان محدود کردن دسترسی به داده ها را به برنامه های خاصی فراهم نمی کنند. هم چنین، هیچگونه کنترلی را بر روی فرمت داده ها ارائه نمی دهند.در عوض،
ازContent Provider استفاده کنید که مجوز خواندن و نوشتن را به برنامه های دیگر پیشنهاد می دهد و می توان مجوزهای پویا(در هر زمان که نیاز باشد) را به صورت موردی، اعطا کرد.
➕برای حفاظت بیشتر از داده های حساس، می توانید فایل های محلی را با استفاده از یک کلید که به طور مستقیم برای برنامه قابل دسترسی نیست، رمزنگاری کنید. به عنوان مثال، شما می توانید کلیدی را درKeyStore ذخیره کرده و آن را توسط رمزعبور کاربر(که در داخل دستگاه ذخیره نشده است) محافظت نمایید. گرچه این روش، از داده ها در قبال دسترسیRoot محافظت نمی کند و می توان با این دسترسی، رمزعبور ورودی کاربر را مانیتور کرد، اما می تواند دستگاه های گم شده ای را که بدون رمزنگاری فایل سیستم هستند را محافظت کند.
2️⃣ فضای ذخیره ساز خارجی
فایل هایی که بر روی فضای ذخیره ساز خارجی مانند کارت هایSD ایجاد می شوند، به صورت عمومی قابل خواندن و نوشتن می باشند. به دلیل اینکه فضای ذخیره ساز خارجی را می توان از دستگاه جدا کرد یا توسط هر برنامه ای، آن را تغییر داد، نباید داده های حساس را درون این فضا ذخیره کنید.
هر زمان که داده ها را از فضای ذخیره ساز خارجی مدیریت می کنید، باید اعتبارسنجی ورودی را انجام دهید. شما نباید فایل های اجرایی یا فایل های کلاس
را پیش از بارگذاری پویا(Dynamic Loading)، درون حافظه خارجی ذخیره کنید. اگر برنامه شما، فایل های اجرایی را از حافظه خارجی بازیابی کند، این فایل ها باید پیش از بارگذاری پویا، امضا شده باشند و از نظر رمزنگاری نیز تایید شده باشند.
↩️ادامه دارد...
#Android #Security #Privacy #Permission #Hack #Attack
اقتباس از dynamicClass
🆔 @AndroidStudyChannel
♦️بخش دوم
🔵 ذخیره داده ها
یکی از شایعترین نگرانی های امنیتی در برنامه های اندرویدی، این است که آیا داده های ذخیره شده در دستگاه کاربر، برای سایر برنامه ها قابل دسترسی هستند یا نه؟! سه روش اصلی برای ذخیره داده ها بر روی دستگاه وجود دارد:
1️⃣ فضای ذخیره ساز داخلی
به صورت پیش فرض، فایل هایی که شما بر روی حافظه داخلی دستگاه ایجاد می کنید، فقط از درون برنامه شما قابل دستیابی هستند. سیستم عامل اندروید این سطح حفاظتی را اجرا می کند و برای بیشتر برنامه ها کافی می باشد.
به طور کلی، از حالت های:
MODE_WORLD_WRITEABLE
و
MODE_WORLD_READABLE
برای فایل های IPCخودداری کنید، زیرا این دو روش، امکان محدود کردن دسترسی به داده ها را به برنامه های خاصی فراهم نمی کنند. هم چنین، هیچگونه کنترلی را بر روی فرمت داده ها ارائه نمی دهند.در عوض،
ازContent Provider استفاده کنید که مجوز خواندن و نوشتن را به برنامه های دیگر پیشنهاد می دهد و می توان مجوزهای پویا(در هر زمان که نیاز باشد) را به صورت موردی، اعطا کرد.
➕برای حفاظت بیشتر از داده های حساس، می توانید فایل های محلی را با استفاده از یک کلید که به طور مستقیم برای برنامه قابل دسترسی نیست، رمزنگاری کنید. به عنوان مثال، شما می توانید کلیدی را درKeyStore ذخیره کرده و آن را توسط رمزعبور کاربر(که در داخل دستگاه ذخیره نشده است) محافظت نمایید. گرچه این روش، از داده ها در قبال دسترسیRoot محافظت نمی کند و می توان با این دسترسی، رمزعبور ورودی کاربر را مانیتور کرد، اما می تواند دستگاه های گم شده ای را که بدون رمزنگاری فایل سیستم هستند را محافظت کند.
2️⃣ فضای ذخیره ساز خارجی
فایل هایی که بر روی فضای ذخیره ساز خارجی مانند کارت هایSD ایجاد می شوند، به صورت عمومی قابل خواندن و نوشتن می باشند. به دلیل اینکه فضای ذخیره ساز خارجی را می توان از دستگاه جدا کرد یا توسط هر برنامه ای، آن را تغییر داد، نباید داده های حساس را درون این فضا ذخیره کنید.
هر زمان که داده ها را از فضای ذخیره ساز خارجی مدیریت می کنید، باید اعتبارسنجی ورودی را انجام دهید. شما نباید فایل های اجرایی یا فایل های کلاس
را پیش از بارگذاری پویا(Dynamic Loading)، درون حافظه خارجی ذخیره کنید. اگر برنامه شما، فایل های اجرایی را از حافظه خارجی بازیابی کند، این فایل ها باید پیش از بارگذاری پویا، امضا شده باشند و از نظر رمزنگاری نیز تایید شده باشند.
↩️ادامه دارد...
#Android #Security #Privacy #Permission #Hack #Attack
اقتباس از dynamicClass
🆔 @AndroidStudyChannel