ایمن‌سازی محیط

Google مجموعه‌ای از میاناهای برنامه‌سازی کاربردی و سرویس‌ها را ارائه می‌دهد تا به شما کمک کند تشخیص دهید که آیا برنامه‌تان در محیطی امن و مطمئن اجرا می‌شود یا نه. محور اصلی Play Integrity API است که با شناسایی تعامل‌های بالقوه خطرناک و کلاهبردارانه کمک می‌کند بررسی کنید تعامل‌ها واقعی باشند. علاوه‌بر تمامیت برنامه و دستگاه، Play Integrity API اکنون اطلاعاتی درباره خطرات دسترسی و دسترس‌پذیری، سپر ایمنی Google Play، و فعالیت اخیر دستگاه ارائه می‌دهد. برای تقویت بیشتر راهبرد ضدکلاهبرداری شما، پلاتفرم Android میاناهای برنامه‌سازی کاربردی‌ای برای سناریوهای خاص که ممکن است به برنامه شما مربوط باشد ارائه می‌دهد.

Play Integrity API

ویژگی‌های Play Integrity API

Play Integrity API به شما امکان می‌دهد از وضعیت امنیتی دستگاهی که برنامه‌تان در آن اجرا می‌شود مطلع شوید. این کار به شما کمک می‌کند مطمئن شوید که کاربر درست به اطلاعات حساس دسترسی دارد.

این API به شما کمک می‌کند بررسی کنید که تعامل‌ها و درخواست‌های سرور از دودویی برنامه واقعی شما در محیطی قابل‌اعتماد نشئت گرفته باشند:

  • کد دودویی برنامه اصلی: تعیین کنید که آیا با کد دودویی تغییرنیافته خود که Google Play آن را تشخیص می‌دهد تعامل دارید یا نه.
  • نصب واقعی Play: تعیین کنید که آیا حساب کاربری فعلی دارای پروانه است یا نه، یعنی کاربر برنامه یا بازی شما را در Google Play نصب کرده یا هزینه آن را پرداخت کرده است یا نه.
  • دستگاه Android واقعی: تعیین کنید که آیا برنامه‌تان در دستگاه واقعی Android با پشتیبانی «خدمات Google Play» اجرا می‌شود یا نه.
  • عاری از بدافزار شناخته‌شده: تعیین می‌کند که آیا «سپر ایمنی Google Play» روشن است یا نه و آیا برنامه‌های مخاطره‌آمیز یا خطرناک نصب‌شده در دستگاه را پیدا کرده است یا نه.
  • خطر پایین دسترسی توسط برنامه‌های دیگر: تعیین کنید آیا برنامه‌های دیگری که می‌توانند محتوای صفحه‌نمایش را ضبط کنند یا دستگاه و ورودی‌های برنامه‌تان را کنترل کنند درحال اجرا هستند یا نه.

این کار چگونه به کاهش کلاهبرداری کمک می‌کند

وقتی کاربر کنش مهمی در برنامه‌تان انجام می‌دهد، می‌توانید Play Integrity API را فراخوانی کنید. اگر این‌طور نبود، سرور زیرینه برنامه‌تان می‌تواند تصمیم بگیرد که برای دفاع دربرابر حملات و کلاهبرداری چه کاری انجام دهد. برای مثال، می‌توانید درستی‌سنجی کاربر اضافی درخواست کنید یا دسترسی به عملکرد حساس را رد کنید.

جریان تصمیم‌گیری Play Integrity API

خطر دسترسی به برنامه

سیگنال خطر دسترسی به برنامه برای کمک به شما در ارزیابی اینکه آیا برنامه‌های دیگر در دستگاه می‌توانند هنگام اجرای برنامه شما صفحه‌نمایش را مشاهده و ضبط کنند یا بااستفاده از اجازه‌های دسترس‌پذیری به برنامه شما دسترسی داشته باشند معرفی شده است. برنامه‌های دسترس‌پذیری تأییدشده به‌طور خودکار از این تصمیم‌ها مستثنی می‌شوند. «مخاطره دسترسی برنامه‌ها» به توسعه‌دهندگان کمک می‌کند از برنامه‌هایشان محافظت کنند و درعین‌حال حریم خصوصی کاربر را حفظ کنند، زیرا برنامه درخواست‌کننده هویت برنامه‌های نصب‌شده را دریافت نمی‌کند و حکم به شناسه‌های کاربر یا دستگاه پیوند داده نمی‌شود.

نماگرفت تلفنی که از کاربر می‌خواهد برنامه‌های خاصی را ببندد.

به‌لطف این تلاش مشارکتی، می‌توانیم سیگنال‌های لازم را برای به‌دست آوردن اطلاعات آماری عمیق‌تر دریافت کنیم تا از مشتریانمان به‌طور مؤثرتری محافظت کنیم.
—Nubank، شریک دسترسی زودرس

«خطر دسترسی به برنامه» سطوح خطر مختلفی دارد:

  • پاسخ «درحال ضبط» یعنی برنامه‌های دیگری درحال اجرا هستند که می‌توانند صفحه‌نمایش را ضبط کنند.
  • پاسخ کنترل‌کننده یعنی برنامه‌های دیگری درحال اجرا هستند که می‌توانند دستگاه را کنترل کنند، و بنابراین می‌توانند هم صفحه‌نمایش را ضبط کنند و هم ورودی‌های برنامه‌تان را کنترل کنند.

اجرای «مخاطره دسترسی برنامه‌ها»

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

این جدول حاوی چند نمونه حکم است:

نمونه پاسخ حکم خطر دسترسی به برنامه تفسیر
appsDetected:
["KNOWN_INSTALLED"]
فقط برنامه‌هایی نصب شده‌اند که Google Play آن‌ها را شناسایی کرده است یا سازنده دستگاه آن‌ها را ازقبل در پارتیشن سیستم بار کرده است. هیچ برنامه‌ای درحال اجرا نیست که منجر به حکم ضبط، کنترل، یا رونهاد شود.
appsDetected:
["KNOWN_INSTALLED",
"UNKNOWN_INSTALLED",
"UNKNOWN_CAPTURING"]
برنامه‌هایی وجود دارد که توسط Google Play نصب شده‌اند یا ازقبل توسط سازنده دستگاه در پارتیشن سیستم بار شده‌اند. برنامه‌های دیگری درحال اجرا هستند و اجازه‌هایی برای آن‌ها فعال شده است که می‌توانند برای مشاهده صفحه‌نمایش یا ضبط سایر ورودی‌ها و خروجی‌ها استفاده شوند.
appsDetected:
["KNOWN_INSTALLED",
"KNOWN_CAPTURING",
"UNKNOWN_INSTALLED",
"UNKNOWN_CONTROLLING"]
برنامه‌های Play یا سیستم درحال اجرا هستند که اجازه‌هایی برایشان فعال شده است که می‌توان از آن‌ها برای مشاهده صفحه‌نمایش یا ضبط سایر ورودی‌ها و خروجی‌ها استفاده کرد. برنامه‌های دیگری نیز درحال اجرا هستند که اجازه‌هایی برایشان فعال شده است که می‌توان از آن‌ها برای کنترل دستگاه و کنترل مستقیم ورودی‌ها به برنامه‌تان استفاده کرد.
appAccessRiskVerdict: {} خطر دسترسی به برنامه ارزیابی نمی‌شود چون یکی از الزامات ضروری رعایت نشده است. برای مثال، دستگاه به‌اندازه کافی قابل‌اعتماد نبود.

سیگنال «سپر ایمنی Play»

«سیگنال سپر ایمنی Play» به برنامه شما می‌گوید که آیا «سپر ایمنی Play» روشن است یا نه و آیا برنامه‌های مضر شناخته‌شده‌ای را پیدا کرده است که در دستگاه نصب شده باشند یا نه.

environmentDetails:{
  playProtectVerdict: "NO_ISSUES"
}

اگر بدافزار نگرانی خاصی برای برنامه شما یا داده‌های کاربران شما است، می‌توانید این حکم را بررسی کنید و از کاربران خود بخواهید قبل‌از ادامه، «سپر ایمنی Play» را روشن کنند یا برنامه‌های مضر را بردارند.

کادر گفتگوی «روشن کردن سپر ایمنی Play»

playProtectVerdict می‌تواند یکی از مقادیر زیر را داشته باشد:

حکم توضیح اقدام توصیه‌شده

NO_ISSUES

«سپر ایمنی Play» روشن است و هیچ مشکلی در برنامه‌های دستگاه پیدا نکرد.

«سپر ایمنی Play» روشن است و مشکلی پیدا نکرده است، بنابراین نیازی به اقدام کاربر نیست.

NO_DATA

«سپر ایمنی Play» روشن است اما هنوز اسکنی انجام نشده است. ممکن است دستگاه یا برنامه «فروشگاه Play» اخیراً بازنشانی شده باشد.

«سپر ایمنی Play» روشن است و مشکلی پیدا نکرده است، بنابراین نیازی به اقدام کاربر نیست.

POSSIBLE_RISK

«سپر ایمنی Play» خاموش است.

«سپر ایمنی Play» روشن است و مشکلی پیدا نکرده است، بنابراین نیازی به اقدام کاربر نیست.

MEDIUM_RISK

«سپر ایمنی Play» روشن است و برنامه‌های بالقوه مضری را که در دستگاه نصب شده‌اند پیدا کرده است.

بسته به میزان تحمل ریسک، می‌توانید از کاربر بخواهید «سپر ایمنی Play» را راه‌اندازی کند و درخصوص هشدارهای «سپر ایمنی Play» اقدام کند. اگر کاربر نتواند این الزامات را برآورده کند، می‌توانید او را از کنش سرور مسدود کنید.

HIGH_RISK

«سپر ایمنی Play» روشن است و برنامه‌های خطرناکی را که در دستگاه نصب شده‌اند پیدا کرده است.

بسته به میزان تحمل ریسک، می‌توانید از کاربر بخواهید «سپر ایمنی Play» را راه‌اندازی کند و درخصوص هشدارهای «سپر ایمنی Play» اقدام کند. اگر کاربر نتواند این الزامات را برآورده کند، می‌توانید او را از کنش سرور مسدود کنید.

UNEVALUATED

حکم «سپر ایمنی Play» ارزیابی نشده است.

این اتفاق ممکن است به دلایل مختلفی رخ دهد، ازجمله:

  • دستگاه به‌اندازه کافی قابل‌اعتماد نیست.
  • فقط بازی‌ها: حساب کاربری «دارای پروانه» نیست.

فعالیت اخیر دستگاه

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

اگر برای دریافت recentDeviceActivity موافقت کنید، فیلد deviceIntegrity دو مقدار خواهد داشت:

deviceIntegrity: {
  deviceRecognitionVerdict: ["MEETS_DEVICE_INTEGRITY"]
  recentDeviceActivity: {
    // "LEVEL_2" is one of several possible values.
    deviceActivityLevel: "LEVEL_2"
  }
}

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

درخواست‌های استاندارد درمقابل درخواست‌های کلاسیک

به‌عنوان بخشی از پیاده‌سازی Play Integrity، مهم است که دو نوع درخواست را درنظر بگیرید. در اکثر موارد باید از درخواست‌های استاندارد استفاده کنید تا سریع‌ترین پاسخ را دریافت کنید - و از درخواست‌های کلاسیک باید در مواردی استفاده شود که درخواست جدیدی درمقابل سابقه تصدیق دستگاه موردنیاز است.

درخواست کلاسیک

درخواست استاندارد

درخواست‌ها بیشتر طول می‌کشد و باید کمتر انجام شود.

برای مثال، به‌عنوان یک اقدام گاه‌به‌گاه و یک‌باره برای بررسی اینکه آیا یک کنش بسیار ارزشمند یا حساس واقعی است یا نه.

به‌ندرت استفاده شود.

درخواست‌ها تأخیر کمی دارند و می‌توان آن‌ها را درصورت درخواست استفاده کرد.

درخواست استاندارد از دو بخش تشکیل شده است:

  • آماده‌سازی ارائه‌دهنده توکن یکپارچگی (یک‌باره)
  • درخواست کد تمامیت (درصورت درخواست)

استفاده درصورت درخواست.

برای کسب اطلاعات بیشتر درباره درخواست‌های استاندارد و کلاسیک، اسناد Play Integrity را بخوانید.

پیاده‌سازی

برای شروع به کار با Play Integrity API:

به‌طور پیش‌فرض، Play Integrity API تا ۱۰ هزار درخواست برای هر برنامه در روز را مجاز می‌کند. برای ابراز تمایل به افزایش حداکثر درخواست‌های روزانه، این دستورالعمل‌ها را دنبال کنید. برای واجدشرایط بودن برای افزایش حداکثر تعداد درخواست‌های روزانه، برنامه‌تان باید Play Integrity API را به‌درستی پیاده‌سازی کند و علاوه‌بر کانال‌های توزیع دیگر، در Google Play نیز دردسترس باشد.

نکاتی که باید درباره Play Integrity API به‌خاطر داشته باشید

محافظت تمامیت خودکار (API >= 23)

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

این کار چگونه به کاهش کلاهبرداری کمک می‌کند

وقتی محافظت یکپارچگی خودکار را روشن می‌کنید، Google Play بررسی‌هایی به کد برنامه‌تان اضافه می‌کند و با تکنیک‌های پیشرفته مبهم‌سازی و ضد مهندسی معکوس، برداشتن آن‌ها را دشوار می‌کند. در زمان اجرا، محافظت بررسی می‌کند که آیا برنامه شما دستکاری یا توزیع مجدد شده است یا نه:

  • اگر بررسی نصب‌کننده ناموفق باشد، از کاربران درخواست می‌شود برنامه‌تان را از Google Play دریافت کنند
  • اگر بررسی اصلاح ناموفق باشد، برنامه اجرا نخواهد شد

این کار به محافظت از کاربران دربرابر نسخه‌های اصلاح‌شده برنامه‌تان کمک می‌کند.

پیاده‌سازی

درحال‌حاضر، «محافظت یکپارچگی خودکار» فقط برای شرکای منتخب Play دردسترس است. اگر این ویژگی در «کنسول Google Play» شما دردسترس نیست و می‌خواهید برای دسترسی به آن ابراز تمایل کنید، با پشتیبانی توسعه‌دهنده Google Play تماس بگیرید.

می‌توانید محافظت را هنگام ایجاد نسخه پخش یا در صفحه محافظت‌شده با Play روشن کنید. محافظت یکپارچگی خودکار مستلزم این است که برنامه‌تان از امضای برنامه Play استفاده کند.

حتماً برنامه محافظت‌شده‌تان را قبل‌از ارتقا دادن نسخه پخش به تولید آزمایش کنید.

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

  • نسخه‌های محافظت‌نشده برنامه را منتشر نکنید
  • هنگام ترکیب کردن راه‌حل‌های محافظت دربرابر دست‌کاری مراقب باشید
  • آزمایش کردن برنامه محافظت‌شده قبل‌از انتشار آن در کانال تولید
  • آمار را به‌طور معمول برای هرگونه افزایش در خرابی‌ها پایش کنید
  • می‌توانید نسخه‌های قفل‌شکسته برنامه‌تان را به Google Play گزارش کنید