توصیههای امنیتی پرداخت درونبرنامهای
دریافت فایل llm.txt — خلاصهٔ انگلیسی توصیههای امنیتی پرداخت درونبرنامهای.
برای جلوگیری از جعل خرید، دستکاری اطلاعات پرداخت و دسترسی غیرمجاز به محصولات درونبرنامهای، لازم است هنگام پیادهسازی سرویس پرداخت مایکت، اصول امنیتی را رعایت کنید.
در ادامه، مهمترین توصیههای امنیتی برای توسعه و انتشار برنامههای دارای پرداخت درونبرنامهای ارائه شده است.
۱. اعتبارسنجی خرید را در سرور انجام دهید
یکی از مهمترین اقدامات امنیتی، اعتبارسنجی اطلاعات خرید و بررسی امضای دیجیتال در سرور است.
انجام اعتبارسنجی صرفاً در سمت کلاینت، امکان دستکاری یا دور زدن فرآیند تأیید خرید را از طریق مهندسی معکوس برنامه افزایش میدهد.
برای افزایش امنیت، توصیه میشود:
- امضای دیجیتال و اطلاعات خرید را در سرور اعتبارسنجی کنید.
- پیش از فعالسازی محصول یا ارائه خدمات، از معتبر بودن خرید اطمینان حاصل کنید.
- ارتباط بین برنامه و سرور را از طریق HTTPS برقرار کنید.
- وضعیت خریدها و محصولات تحویلدادهشده را در سرور ثبت کنید تا از استفاده مجدد از یک خرید جلوگیری شود.
- اطلاعات دریافتی از کلاینت را بدون اعتبارسنجی معتبر تلق ی نکنید.
نکته: انتقال اعتبارسنجی به سرور، احتمال دستکاری فرآیند تأیید خرید را کاهش میدهد، اما بهتنهایی تضمینکننده امنیت کامل نیست.
۲. از محتوای دیجیتال محافظت کنید
اگر برنامه شما محتوای پولی مانند فایلهای صوتی، تصویری یا سایر منابع دیجیتال ارائه میدهد، از قرار دادن نسخه محافظتنشده این محتوا در فایل APK خودداری کنید.
زیرا محتوای موجود در فایل APK ممکن است از طریق مهندسی معکوس یا استخراج فایلها در دسترس افراد غیرمجاز قرار گیرد.
برای محافظت از محتوای دیجیتال:
- محتوای پولی را پس از اعتبارسنجی خرید، از سرور در اختیار کاربر قرار دهید.
- برای دریافت محتوا از ارتباط امن HTTPS استفاده کنید.
- دسترسی به محتوای پولی را بر اساس وضعیت خرید و مجوزهای کاربر کنترل کنید.
- در صورت نیاز به ذخیره محلی محتوا، از روشهای رمزنگاری مناسب استفاده کنید.
- کلیدهای رمزنگاری حساس را بهصورت ثابت و قابل استخراج در برنامه قرار ندهی د.
در صورت ذخیره محتوای حساس روی حافظه خارجی دستگاه، توجه داشته باشید که این فضا ممکن است در دسترس سایر برنامهها یا کاربران قرار گیرد.
توصیه: در صورت امکان، محتوای حساس را در حافظه اختصاصی برنامه ذخیره کنید و برای مدیریت کلیدهای رمزنگاری از امکانات امنیتی اندروید مانند Android Keystore استفاده کنید.
۳. از مبهمسازی کد (Code Obfuscation) استفاده کنید
مبهمسازی کد، فرآیند تحلیل و مهندسی معکوس برنامه را دشوارتر میکند و میتواند احتمال شناسایی و دستکاری بخشهای حساس را کاهش دهد.
برای این منظور، توصیه میشود از ابزار R8 که در سیستم ساخت اندروید پشتیبانی میشود، استفاده کنید.
هنگام فعالسازی مبهمسازی کد:
- کلاسها و متدهای غیرضروری را از نسخه نهایی برنامه حذف کنید.
- نام کلاسها، متدها و فیلدهای قابل مبهمسازی را تغییر دهید.
- از قرار دادن اطلاعات حساس و کلیدهای محرمانه در کد برنامه خودداری کنید.
- قوانین موردنیاز کتابخانههای استفادهشده را در تنظیمات R8 لحاظ کنید.
در صورت استفاده از کتابخانهای که به حفظ کلاسهای مشخصی نیاز دارد، قوانین مربوط به آن را در فایل تنظیمات R8 یا ProGuard اضافه کنید.
برای مثال، در صورت نیاز به حفظ کلاسهای مربوط به Billing API، ممکن است از قانون زیر استفاده شود:
-keep class com.android.vending.billing.** { *; }
نکته: این قانون باید فقط در صورت نیاز و مطابق مستندات نسخه کتابخانه مورد استفاده اضافه شود. حفظ غیرضروری کلاسها میتواند اثربخشی مبهمسازی را کاهش دهد.
مبهمسازی کد یک لایه امنیتی تکمیلی است و جایگزین اعتبارسنجی سمت سرور نمیشود.