چگونه امنیت اپلیکیشن اندرویدی خود را تامین کنیم؟ - بخش دوم

چگونه امنیت اپلیکیشن اندرویدی خود را تامین کنیم؟ - بخش دوم

در مقاله قبلی روش هایی برای تامین امنیت اپلیکیشن اندروید شرح داده شد، در ادامه با ما همراه باشید تا شما را با سایر روش ها آشنا نماییم.

5. استفاده از GCM به جای SMS

پیش از روی کار آمدن GCM یا همان پیام رسان کلود گوگل، توسعه دهندگان از SMS جهت ارسال داده از سرور به اپلیکیشن استفاده می کردند، اما امروزه این روش به ندرت به کار برده می شوند.

چنانچه شما به آن دسته از توسعه دهندگان تعلق دارید که هنوز هم از SMS استفاده می کنند، باید بدانید که پروتکل SMS رمزگذاری شده نیست و در مقابل حملات spoofing امن نمی باشد، علاوه بر این SMS تنها بر روی گوشی آن دسته از کاربران خوانده می شود که دارای مجوز READ_SMS باشند.

از طرفی GCM دارای امنیت بیشتری بود و روش ترجیحی برای ارسال پیام به اپلیکیشن می باشد، چرا که تمامی تبادلات GCM رمزگذاری شده اند. تصدیق این ارتباطات با استفاده از توکن های ثبت در سمت مشتری و یک کلید API منحصر به فرد در سمت سرور صورت می پذیرد که به طور منظم بازنشانی می شوند. با استفاده از این مطلب می توانید اطلاعات بیشتری درباره GCM کسب کنید.

6. خودداری از درخواست داده های شخصی

امروزه به حریم خصوصی کاربران بهایی زیادی داده می شود، در حقیقت قوانین متعددی جهت حفاظت از حریم خصوصی کاربران وضع شده اند. با این اوصاف تنها در صورت داشتن یک دلیل خوب و منطقی و یک زیرساخت با امنیت بالا برای جمع آوری، ذخیره سازی و انتقال داده های شخصی کاربران، می توانید از کاربران داده های شخصی درخواست کنید و در غیر این صورت باید از درخواست مستقیم چنین داده هایی در اپلیکیشن خودداری نمایید.

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

چنانچه خودتان مایل به مدیریت اعتبارسنجی کاربر هستید، پیشنهاد می شود که این اطلاعات را به صورت رشته های هش امن ذخیره کرده و مبادله نمایید. ساده ترین راه برای تولید انواع مختلف از هش ها استفاده از اندروید SDK با بهره گیری از کلاس MessageDigest می باشد.

در زیر یک قطعه کد کوچکی را مشاهده می کنید که نحوه ساخت یک هش از رشته Hello World با استفاده از تابع هشینگ SHA-256 را نشان داده است.

// Initialize MessageDigest to use SHA-256

MessageDigest md = MessageDigest.getInstance("SHA-256");

// Convert the string to a hash

byte[] sha256Hash = md.digest("Hello World".getBytes());

7. تایید اعتبار ورودی کاربر

در اندروید ورودی نامعتبر از سوی کاربر معمولا موجب مشکلات امنیتی مانند سرریزی بافر نمی گردد، اما با این وجود اگر به کاربر یا تامین کننده محتوا که به صورت داخلی از پایگاه داده SQLite استفاده می کند، اجازه تعامل با پایگاه داده SQLite را بدهید، باید به صورت دقیق ورودی کاربر را پالایش کرده و یا از کوئری های پارمتردار استفاده نمایید، در غیر این صورت داده های شما در مقابل حملات تزریق SQL آسیب پذیر می گردند.

اعتبارسنجی و پالایش ورودی کاربر در شرایطی که از ورودی کاربر برای تولید کد به صورت داینامیک جهت اجرای یک موتور اسکریپتی جاسازی شده مانند Mozilla Rhino استفاده می کنید، اهمیت زیادی دارد.

8. استفاده از ProGuard پیش از انتشار اپلیکیشن

در صورتی که اتکرها به کد منبع دسترسی پیدا کنند، اقدامات امنیتی تعبیه شده در اپلیکیشن اندروید به خطر می افتد. پیشنهاد می شود که پیش از انتشار اپلیکیشن از ابزارهایی مانند ProGuard که در SDK اندروید جای گرفته استفاده کرده و کد منبع را نامفهوم و کوچک گردانید.

در صورتی که در اندروید استودیو مقدار buildType را release ست کنید، اندروید استودیو به طور خودکار ProGuard را در فرآیند ساخت در بر می گیرد. پیکربندی پیشفرض ProGuard در فایل proguard-android.txt در SDK اندروید قرار دارد و برای بسیاری از اپلیکیشن ها بسنده می کند. چنانچه مایل به افزودن قوانین کاستوم به پیکربندی هستید، می توانید این تغییرات را در فایلی به نام proguard-rules.pro که بخشی از هر پروژه اندروید استودیو است، اعمال کنید.

نتیجه گیری

امید است تا درک بهتری از تامین امنیت اپلیکیشن اندروید پیدا کرده باشید، اکثر روش های اشاره شده در این مقاله در صورتی مناسب خواهد بود که از SDK اندروید جهت توسعه اپلیکیشن خود استفاده نمایید، در صورت بکارگیری اندروید NDK، دقت بیشتری از سوی شما نیاز خواهد بود، چرا که هنگام برنامه نویسی به زبان سی، انتظار می رود که خودتان برخی از جزئیات سطح پایین مانند اشاره گرها و تخصیص حافظه را مدیریت کنید. جهت دریافت اطلاعات بیشتر در خصوص امنیت اندروید می توانید به AOSP security documents مراجعه نمایید.

 

http://code.tutsplus.com برگرفته از

اینها را هم بخوانید