دراین نوشته قصد داریم تا شما را با راههایی که باعث بالا رفتن امنیت برنامه شما میشود آشنا کنیم، در ادامه حتماً این موضوعات را دنبال کنید تا بتوانید هنگام عرضه برنامه تان آن را با حداکثر امنیت منتشر کنید.بهترین راههای بالا بردن امنیت در ذیل بیان شده اند.
تایید امضا را در سرور انجام دهید
شما هنگام خرید باید تایید امضا را در یک سرور انجام دهید و آن را بر روی دستگاه انجام ندهید. پیادهسازی فرآیند تایید امضا در سرور کار را برای حمله به این فرآیند سخت میکند و این از طریق مهندسی معکوس فایل apk شما ممکن میشود. اما اگر شما پردازشهای امنیتی خود را یک سرور منتقل کردید، مطمئن باشید که ارتباط مابین دستگاه و سرور امن است.
از محتوای رمز گذاری نشده حفاظت کنید
برای اطمینان از اینکه افراد به این اطلاعات دسترسی پیدا نکنند و آن را به طور غیر قانونی منتشر نکنند آن را در فایل apk بسته نرم افزاری خود قرار ندهید. در عوض، یکی از موارد زیر را انجام دهید:
- از سرویس Real-time برای انتقال دادن محتوای خود استفاده کنید، با استفاده از این سرویس میتوانید مطالب خود را هر زمان که خواستید به روز رسانی کنید، یعنی مطالب جدید در اختیار کاربر قرار دهید.
- از یک سرور برا ی انتقال محتوای خود استفاده کنید.
هنگامی که شما محتوا را از یک سرور یا یک سرویس Real-time دریافت کنید، شما میتوانید مطالب را در حافظه دستگاه یا بر روی کارت SD دستگاه ذخیره کنید. حال اگر شما برای ذخیرهی محتوا از کارت SD استفاده کردهاید، لازم است از یک کلید رمزنگاری منحصر به فرد استفاده کنید و آن را ذخیره کنید.
کدهای خود را Obfuscate کنید
شما باید کدی را که برای پرداخت ایجاد کردهاید رااز هم پاشیده و مبهم کنید تا افرادی که از طریق مهندسی معکوس میخواهند به محتوا و بقیه قسمتهای برنامهی شما دسترسی پیدا کنند را سخت کنید. برای این کار به شما بسته ای که باعث این کار میشود را پیشنهاد میکنیم: Proguardعلاوه بر این به شما پیشنهاد میکنیم که موارد زیر را نیز استفاده کنید:
- رشتهها را در زمان اجرا بسازید.
- استفاده از روشهای درون خطی در بقیه روشها.
- از Java Reflection برای فراخوانی روشها استفاده کنید.
اگر از این روشها استفاده کنید، افرادی که به برنامه شما حمله میکنند کاهش خواهند یافت و با خیال راحت تری میتوانید روش درون خرید را پیادده سازی کنید. مورد دیگر اینکه اگر از Proguard برای بهم ریختن کدتان استفاده میکنید، باید به فایل خود خط زیر را باید اضافه کنید:
-keep class com.android.vending.billing.**
در نهایت اینکه توصیه های زیر را جدی بگیرید:
- برنامه نمونه خرید درونبرنامهای به طور عمومی منتشر شده و هر کسی میتواند آن را دانلود کند و این موضوع حاکی از این است که حمله کنندگان به راحتی میتوانند به وسیله مهندسی معکوس به برنامه شما حمله کنند. اما اگر شما از کد نمونه همان طور که بوده استفاده کنید و آن را تغییر ندهید به مشکل برخواهید خورد. حال تا آنجا که ممکن است سعی کنید برنامه خود را تغییر دهید.
- افرادی که به برنامهها حمله میکنند اکثراً ابتدا و انتهای آن را بررسی میکنند، پس پیشنهاد میکنیم بیشتر از هر قسمت دیگری ابتدا و انتهای برنامه خود را تغییر دهید.
- استفاده از noncesهای تصادفی امن: Nonces نباید قابل پیش بینی و یا مورد استفاده مجدد قرار گیرد. شما میتوانید همیشه از یک مولد عدد تصادفی cryptographically امن (مانند SecureRandom) برای تولید nonces استفاده کنید. با استفاده از این روش میتوانید حملاتی که به برنامه شما میشود را کاهش دهید.
- استفاده از developer payload هنگام ارسال درخواست خرید: در نسخه3 API، شما میتوانید یک developer payload کنار ارسال درخواست خرید خود به مایکت ارسال نمایید. developer payload یک رشته است که به طور معمول هنگام خرید یک شناسه منحصر به فرد را در نظر میگیرد حال شما باید این رشته را برای احراز هویت کاربر که خرید را از برنامه شما انجام داده به مایکت ارسال نمایید بعد از اتمام خرید این رشته همراه با پاسخ خرید به شما برمیگرداند. پس از ارسال این رشته از سوی مایکت به شما آن را بررسی نمایید و مطمئن شوید که این رشته همانی است که شما آن را به مایکت ارسال نموده بودید. برای انجام این موضوع بهتر است برای حفظ امنیت آن را بر روی سرور خود انجام دهید.
- بر علیه افرادی که علامت تجاری کپی رایت برنامه شما را نقض میکنند: اگر شما برنامه یا محصول خود را که در مایکت توزیع میکنید، مشاهده کردید افراد دیگری در جای دیگری به طور غیر قانونی اقدام به عرضه برنامه شما میکنند به طور قاطعانه پیگیر این موضوع شوید.
- پیادهسازی یک برنامه revocability برای محتوای باز: اگر شما در حال استفاده از یک سرور راه دور برای ارائه و یا مدیریت محتوای خود استفاده میکنید، همیشه دسترسیها و خریدها را بررسی کنید. و اگر فردی را دیدید که دسترسی او کمی مبهم و با مشکل است، اجازه دسترسی او را لغو نمایید.
- حفاظت از کلید عمومی مایکت: برای اینکه کلید عمومی خود را از دید کاربران مخرب و هکرها دور نگه دارید و آن را امن نگاه دارید، میتوانید رشته را در زمان اجرا بسازید یا از دست بردن در بیتها (برای مثال، XOR با برخی از رشتههای دیگر) برای مخفی کردن کلید واقعی خود استفاده کنید تا هیچ هکر یا کاربر مخربی به کلید عمومی شما دسترسی پیدا نکنند.