آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

آموزش امنیت برنامه ها در اندروید

aliakbar333  11 سال پیش  11 سال پیش
+27 0

با سلام و عرض ادب خدمت همه دوستان 

هدف من از راه اندازی این صفحه را ههای تامین هرچه بیشتر امنیت برنامه در اندروید می باشه

 دوستان لطفا اجازه بدید که این صفحه آموزشی باقی بمونه و از طرح سوال در این صفحه خوداری کنید و فقط آموزش های خودتون رو در این تاپیک جهت استفاده دیگر کاربران بیان کنید

برای طرح سوالات خودتون در خصوص این تاپیک  به صفحه "  سوالات  و  پرسش و پاسخ در خصوص امنیت برنامه ها در اندروید "  مراجعه کنید.

برای مطالب  و آموزش ها کامنت بذارید

 

 برای این سوال 9 پاسخ وجود دارد.
پاسخ به سوال 
aliakbar333  11 سال پیش
+10 0

بگذارید ابتدای کار امنیت و دسترسی ها و اجازه ها در اندروید رو مرور کنیم و اینکه اصولا امنیت و دسترسی ها در اندروید چی هست و به طور کلی امنیت و مقوله های اون رو بررسی کنیم : 

حتما تا حال با این قضیه روبرو شدین که هنگام نصب یه برنامه یا یه بازی بر روی گوشی اندرویدی خود با این پیغام روبرو میشین که به شما میگه : این برنامه کاربردی (بازی) برای نصب به این موارد 1.  ... 2... 3... احتیاج داره و لازمه که یه سری اطلاعات رو بفرسته از جمله دسترسی به دوربین ، اطلاعات پیام ، اطلاعات مخاطبین و....  و از شما میپرسه که آیا موافقت می کنید یا نه ؟ که برای ادامه نصب شما باید موافقت کنید تا برنامه نصب بشه. حالا کاری که ما باید انجوم بدیم اینه که به سازنده برنامه اعتماد کنیم و بعضا راهی جز این نداریم . 

مثلا :هنگام نصب برنامه های ارتباطی ممکنه که لازم باشه اطلاعات مخاطبین شما ارسال بشه . 

حالا برنامه هایی که ما قراره طراحی کنیم  اگه قرار باشه به یه سری از امکانات دسترسی داشته باشه باید به صراحت به کاربرانمون اعلام کنیم که برنامه ما برای نصب نیاز به این مجوز ها روی گوشی شما داره و از کاربر بخوایم که به برنامه ما اعتماد کنه . این یک مقوله 

مقوله دیگری که میتونه در بحث امنیت اندروید مورد بحث قرار بگیره و صرفا" میشه گفت به برنامه نویس برنامه مربوطه و ارتباطی با کاربران نداره بحث امنیت خود برنامه هست که باید مورد توجه قرار بگیره و از ابتدای طراحی هم مورد توجه باشه . برای جلوگیری از کرک شدن و سواستفاده و ....

پاسخ به سوال 
aliakbar333  11 سال پیش
+7 0

معماری امنیتی پلتفرم اندروید

اندروید به دنبال این است که به امنترین و پرکاربردترین سیستم عامل برای پلتفرمهای موبایل تبدیل بشود.اندروید کنترلهای امنیتی

 سیستم عامل های معمولی را که شامل موارد زیر است را دارد :

حفاظت از اطلاعات کاربر.

حفاظت از منابع سیستم (شامل شبکه).

فراهم کردن ایزوله کردن برنامه ها.

برای رسیدن به موارد نام برده، اندروید خصوصیتهای کلیدی زیر را معرفی میکند :

امنیت پرقدرت در سطح OS بواسطه کرنل لینوکس.

SandBox اجباری برنامه، برای تمام برنامه ها (SandBox یک مکانیزم امنیتی برای تست کدهای ناشناخته است).

ارتباط بین پروسه ای امن

امضای برنامه ها

سطح دسترسی تعریف شده برای برنامه ها و اعطا شده به کاربر

همون طور که دوستان در آموزش های استاد مشاهده کردن  شکل زیر لایه های مختلف تشکیل دهنده سیستم عامل اندروید را نشان میدهد. که اندروید در 5 قسمت و 4 لایه تقسیم شده است

 

مروری هم داشته باشیم بر آموزش های استاد : 

 

Kernel linux : این همان هسته است که اندروید روی آن بنا شده است. این لایه شامل تمام درایورهای سطح پایین سخت افزارهایی است که اندروید با آنها در ارتباط است.

Libraries : این قسمت تشکیل دهنده کد هایی است که قابلیت های اندروید را ارائه مینماید. برای مثال کتابخانه ی SQLite پشتیبانی از بانک اطلاعاتی را برای برنامه هایی که نیاز به ذخیره سازی اطلاعات دارند را فراهم میکند. کتابخانه Webkit ویژگیهای مخصوص مرورگر وب را مهیا میسازد.

Android Runtimes : درهمسایگی کتابخانه ها، Android runtimes یکسری کتابخانه های اساسی را برای برنامه نویسان فراهم ساخته تا بتوانند با استفاده از زبان جاوا به تولید برنامه های کاربردی بپردازند. این قسمت همچینین دارای ماشنین مجازی Dalvik است که به هر برنامه اندرویدی اجازه میدهد برای خود یک process مجزا داشته باشد. دقت داشته باشید که برنامه های اندروید در Dalvik کامپایل میشوند. Dalvik یک ماشین مجازی مخصوص برای اندروید است که بخوبی بهینه شده  تا مصرف کمتری از باتری، پردازنده و حافظه داشته باشد.

Application Frameworks : این بخش شامل قابلیت هایی است و طوری تعبیه شده تا برنامه نویسان بتوانند از آن در برنامه های خود بهره ببرند.

Application : در این لایه سطح بالا شاهد برنامه هایی کاربردی هستیم که یا بصورت بومی با خود اندروید همراه هستند (مثل برنامه تلفن، مخاطبان، مرورگر و...) و یا قابلیت نصب به روش های مختلف از جمله با استفاده از Android Market را دارند.



 

پاسخ به سوال 
aliakbar333  11 سال پیش
+4 0

امنیت سطح کرنل و سیستم

در سطح سیستم عامل، پلتفرم اندروید امنیت کرنل لینوکس و نیز امنیت امکان ارتباط امن بین پروسه ای را برای فعال کردن ارتباط بین برنامه های درحال اجرا در پروسه های مختلف  مهیا میکند. این خصوصیات امنیتی در سطح سیستم عامل (OS)، تضمین میکند که حتی کدهای بومی هم در App SandBox اجرا شوند.

امنیت لینوکس

پایه پلتفرم اندروید کرنل لینوکس است. خود کرنل لینوکس بصورت گسترده سالهاست که درحال استفاده است و در میلیونها محیط حساس امنیتی مورد استفاده است. بواسطه ی این گذشته  بطور مداوم در حال پژوهش شدن، هدف حمله قرار گرفتن و فیکس شدن توسط هزاران توسعه دهنده است. لینوکس به یک هسته ی امن و پایدار و مورد اطمینان خیلی از شرکتها و متخصصان تبدیل شده است.

اندروید مجهز شده به هسته ی لینوکس با چند خصوصیات کلیدی امنیتی، شامل :

مدل سطح دسترسی برپایه کاربر.

ایزوله کردن پروسه ها.

مکانیزم قابل تعمیم برای امنیت IPC (همان ارتباط بین پروسه ها).

توانا در حذف بخش های غیرضروری و بطوربلقوه نا امن کرنل.

چون یک سیستم عامل چندکاربره (Multi-Users) میباشد. هدف بنیادین کرنل لینوکس، ایزوله کردن منابع کاربر از کاربر دیگر است. بطورکلی این فلسفه امنیت لینوکس است. بنابراین لینوکس :

مانع شدن کاربر A برای خاندن فایلهای کاربر B.

اطمینان از اینکه کاربرA نتواند از مموری کاربرB استفاده کند.

اطمینان از اینکه کاربرA نتواند از منابع CPU  کاربرB استفاده کند.

 

اطمینان از اینکه کاربرA نتواند از دستگاه کاربرB استفاده کند (تلفن، GPS، بلوتوث و...).

0 0
اندروید برای اعمال سیاست های کنترل دسترسی و پایداری محیط کنترل دسترسی اجباری (mac) از لینوکس امنیت پیشرفته استفاده میکند (SELinux) (11 سال پیش)
پاسخ به سوال 
aliakbar333  11 سال پیش
+1 0

فراهم کنندگان امنیت مدیریت مموری

اندروید تعداد زیادی خصوصیت دارد که اکسپولایت کردن مشکلات امنیتی متداول رو بسیار سخت میکند.

نسخه های مختلف اندروید را بررسی میکنیم :

Android 1.5 :

ProPolice از لبریز شدن پشته جلوگیری میکرد. (-fstack-protector)

Safe_iop باعث کم شدن سرریزشدن عددصحیح (integer) میشود.

جلوگیری از حملات تثبیت تکه (chunk consolidation attacks). این دست از حملات برای انحراف پشته بسیار متداول است.

OpenBSD calloc برای جلوگیری از سرریز integer درطول تخصیص مموری.

Android 2.3 :

Format string vulnerability protections (-Wformat-security -Werror=format-security)

Hardware-based No eXecute (NX) برای جلوگیری از اجرای کد در stack و heap

Android 4.0 :

Address Space Layout Randomization (ASLR) برای تصادفی کردن کلید مکانها در حافظه

Android 4.1 :

پشتیبانی PIE (Position Independent Executable)

Read-only relocations / immediate binding (-Wl,-z,relro -Wl,-z,now)

فعال شدن dmesg_restrict (جلوگیری از نشت آدرسهای کرنل)

 

فعال شدن kptr_restrict  (جلوگیری از نشت آدرسهای کرنل)

پاسخ به سوال 
aliakbar333  11 سال پیش
+1 0

پرمیشنهای فایل سیستم

 

در محیط یونیکس-شکل، سطح دسترسی در فایل سیستم این اطمینان را میدهد که یک کاربر توانایی تغییر در فایلهای کاربر دیگر را ندارد. در مورد اندروید هم، هر برنامه به این شکل اجرا میشود. به جز آن فایلهایی که توسعه دهندگان یک برنامه بصراحت برای دسترسی برنامه های دیگر در اختیار میگذارند، برنامه ها توانایی تغییر و خاندن فایل دیگه ای از برنامه را نخواهد داشت.

پاسخ به سوال 
aliakbar333  11 سال پیش
+2 0

رمزنگاری

اندروید یکسری از API های رمزنگاری برای استفاده ی برنامه ها را محیا میکند. که اینها شامل این موارد میشوند :

 AES, RSA,   DSA,  و  SHA.

اضافه بر این، API ها پروتکلهای لایه های بالاتر نظیر SSL و HTTPS را هم ارائه میدهند.

 

اندروید 4.0 از کلاس KeyChain برای اجازه برنامه ها به استفاده از حافظه اعتباری (credential) سیستم برای کلیدهای خصوصی و زنجیر گواهی نامه، رونمایی کرد.

پاسخ به سوال 
aliakbar333  11 سال پیش
+1 0

قبل از انتشار برنامه اطمینان حاصل نمایید که حالت اشکالزدایی نادرست است و امکان ویرایش کدهای برنامه وجود ندارد. 

رمز گذاری داده های حساس حتی اگر در حافظه داخلی ذخیره می شوند.

به نقل از سایت java code

پاسخ به سوال 
aliakbar333  11 سال پیش
0 0

آیا اطلاعات حساس در LogCat  قابل چاپ نیست.

 اطلاعات مانند نام کاربری، رمز عبور، URL وب سرویس، درخواست و یا پاسخ، و غیره جزئیات.

پاسخ به سوال 
aliakbar333  11 سال پیش
0 0

Simple tips to secure Android app

 

Android has security features built into the operating system that significantly reduce the frequency and impact of application security issues but as application developer, its our job to secure application. The level of security is depends upon application type & domain. There are  few security aspects we need not forget. I am collecting those common tips in this article.

Here, I list down most common things that developers should take care to protect the application.

 

Do not store private or sensitive data on SDCard. To store file on internal storage, use following methods with private mode (Context.MODE_PRIVATE) openFileOutput & openFileInput. If you really wants to store data in sdcard then encrypt it. You will find many encryption libraries. I prefer conceal from facebook.

Restrict ContentProvider using exported flag set as false. It’s not the case that every time we develop ContentProvider for data exchange between applications but ContentProvider can be developed for single application or private

1

<provider android:exported="false" android:name="MyContentProvider" android:authorities="com.example.mycontentprovider" />

Restrict WebView to access local data. HTML5 and related technologies have become popular  to develop Mobile Web App app or Hybrid app. For Hybrid uses WebView to display content from locally store HTML or fetch HTML and other content from the server.  Major security concerns for WebView are setAllowFileAccess() and setAllowContentAccess() methods.

Do not pass sensitive information through Broadcast & Intent. Use LocalBroadcastManager for broadcast data within process / app. LocalBroadcastManager is available in Support Library V4.

Don’t print sensitive information in LogCat. Information like username, password, web service URL, request or response, etc detail.

Remove unnecessary Log before publishing app.

Don’t process malicious Intents.  Before process Intent received in onReceive method of BroadcastReceiver, validate callers package name, action and other information.

Protect your Service with Permission. Use exposed flag as  false When Service is developed for your app only.

Restrict access to Activities. If the activity is intended solely for the internal use of the app then use exported flag set as false.

1

<activity android:name=".view.MyActivity" android:exported="false"> </activity>

Make sure that debug mode is false before publish APK.

Encrypt sensitive data even if you store in internal storage.

For cross app functionality, validate calling application before response.

Properly verify server certificate TLS/SSL for HTTPS web call.

Use NDK whenever you feel that information is not safe in Java code because It can decompile easily. i.e. Constant.

Use ProGuard that shrinks, optimizes, and obfuscates your code.

Remove unwanted / unused <user-permission> from AndroidManifest.xml

Loading classes.dex outside of application is major security risk. DexClassLoader allowed developer to load classes.dex on demand.

منبع


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .