نمای کلی Play Integrity API

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

مرور کلی API یکپارچگی بازی جریان

این API حکم‌هایی را برمی‌گرداند که به شما در تشخیص تهدیدهای احتمالی کمک می‌کند، از جمله:

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

توسعه‌دهندگان گوگل پلی همچنین می‌توانند برای دریافت احکام اضافی جهت شناسایی طیف وسیع‌تری از تهدیدات بالقوه، از جمله موارد زیر، ثبت‌نام کنند:

  • دستگاه‌های وصله نشده : پاسخ MEETS_STRONG_INTEGRITY در بخش deviceIntegrity به شما کمک می‌کند تا تشخیص دهید که آیا دستگاه به‌روزرسانی‌های امنیتی اخیر را اعمال کرده است یا خیر (برای دستگاه‌هایی که اندروید ۱۳ و بالاتر دارند).
  • دسترسی پرخطر توسط سایر برنامه‌ها: appAccessRiskVerdict به شما کمک می‌کند تا مشخص کنید آیا برنامه‌هایی در حال اجرا هستند که می‌توانند برای ضبط صفحه نمایش، نمایش همپوشانی‌ها یا کنترل دستگاه (به عنوان مثال، با سوءاستفاده از مجوز دسترسی) استفاده شوند یا خیر.
  • بدافزار شناخته‌شده: playProtectVerdict به شما کمک می‌کند تا مشخص کنید که آیا Google Play Protect فعال است یا خیر و آیا برنامه‌های خطرناک یا ریسک‌دار نصب‌شده روی دستگاه را پیدا کرده است یا خیر.
  • بیش‌فعالی: سطح recentDeviceActivity به شما کمک می‌کند تا تعیین کنید که آیا یک دستگاه اخیراً حجم درخواست‌های غیرعادی بالایی ارسال کرده است یا خیر، که می‌تواند نشان‌دهنده ترافیک خودکار باشد و می‌تواند نشانه‌ای از حمله باشد.
  • تکرار سوءاستفاده و استفاده مجدد از دستگاه‌ها: deviceRecall (بتا) به شما کمک می‌کند تا تعیین کنید که آیا با دستگاهی که قبلاً علامت‌گذاری کرده‌اید، تعامل دارید یا خیر، حتی اگر برنامه شما دوباره نصب شده باشد یا دستگاه بازنشانی شده باشد.

این API می‌تواند در انواع فرم‌فکتورهای اندروید از جمله تلفن‌های همراه، تبلت‌ها، دستگاه‌های تاشو، اندروید اتو، اندروید تی‌وی، اندروید XR، کروم‌او‌اس، ویر او‌اس و در گوگل پلی گیمز برای کامپیوتر شخصی استفاده شود.

ملاحظات امنیتی

API یکپارچه‌ی Play بیشترین ارزش را برای برنامه‌ی شما فراهم می‌کند اگر از این شیوه‌های توصیه‌شده پیروی کنید:

یک استراتژی ضد سوءاستفاده داشته باشید

API Play Integrity زمانی بهترین عملکرد را دارد که در کنار سایر سیگنال‌ها به عنوان بخشی از استراتژی کلی ضد سوءاستفاده شما و نه به عنوان تنها مکانیسم ضد سوءاستفاده شما استفاده شود. از این API همراه با سایر بهترین شیوه‌های امنیتی مناسب برای برنامه خود استفاده کنید. به طور پیش‌فرض، برنامه شما می‌تواند تا 10،000 درخواست در روز در تمام نصب‌ها داشته باشد. می‌توانید درخواست افزایش حداکثر روزانه خود را بدهید.

قبل از اقدام، اطلاعات تله‌متری جمع‌آوری کنید و مخاطبان خود را بشناسید

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

تصمیم بگیرید که چگونه درخواست احکام صداقت خواهید کرد

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

درخواست‌های استاندارد API برای هر برنامه یا بازی مناسب هستند و می‌توانند بنا به تقاضا برای بررسی صحت هرگونه اقدام کاربر یا درخواست سرور انجام شوند. درخواست‌های استاندارد کمترین تأخیر (به طور متوسط ​​چند صد میلی‌ثانیه) و قابلیت اطمینان بالایی برای دریافت یک حکم قابل استفاده دارند. درخواست‌های استاندارد از ذخیره‌سازی هوشمند روی دستگاه استفاده می‌کنند و در عین حال محافظت در برابر انواع خاصی از حملات را به Google Play واگذار می‌کنند.

درخواست‌های کلاسیک API ، روش اصلی برای درخواست احکام یکپارچگی، همچنان در دسترس هستند. درخواست‌های کلاسیک تأخیر بیشتری دارند (به طور متوسط ​​چند ثانیه) و شما مسئول کاهش خطر انواع خاصی از حملات هستید. درخواست‌های کلاسیک نسبت به درخواست‌های استاندارد، از داده‌ها و باتری کاربر بیشتری استفاده می‌کنند زیرا ارزیابی جدیدی را آغاز می‌کنند و بنابراین باید به ندرت و به عنوان یک اقدام یکباره برای بررسی اینکه آیا یک اقدام بسیار حساس یا ارزشمند واقعی است یا خیر، انجام شوند. اگر در نظر دارید یک درخواست کلاسیک ارسال کنید و آن را برای استفاده بعدی ذخیره کنید، باید به جای آن یک درخواست استاندارد ارسال کنید تا خطر حملات کاهش یابد.

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

درخواست API استاندارد درخواست API کلاسیک
حداقل SDK اندروید مورد نیاز * اندروید ۶.۰ (سطح API ۲۳) یا بالاتر اندروید ۶.۰ (سطح API ۲۳) یا بالاتر
گرم کردن API مورد نیاز است ✔️ (چند ثانیه)
تأخیر معمول درخواست چند صد میلی ثانیه چند ثانیه
فراوانی درخواست‌های بالقوه مکرر (بررسی در صورت درخواست برای هرگونه اقدام یا درخواست) نادر (بررسی یک‌باره برای اقدامات با ارزش بالا یا حساس‌ترین درخواست‌ها)
مقابله با حملات تکرارشونده و مشابه کاهش خودکار توسط گوگل پلی استفاده از فیلد nonce با منطق سمت سرور

* برای کتابخانه Play Integrity API نسخه ۱.۴.۰ و بالاتر، حداقل SDK اندروید پشتیبانی‌شده برای هر دو نوع درخواست یکسان است و توسط minSdkVersion کتابخانه تعیین می‌شود. برای نسخه ۱.۳.۰ و نسخه‌های قبل از آن، حداقل SDK اندروید مورد نیاز برای درخواست‌های Standard API، اندروید ۵.۰ (سطح API ۲۱) و برای درخواست‌های Classic API، اندروید ۴.۴ (سطح API ۱۹) است.

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

درخواست حکم عدم سوء پیشینه در زمان مناسب

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

درخواست‌های API خود را طوری تنظیم کنید که تکرارشان دشوار باشد

درخواست‌های استاندارد API دارای فیلدی به نام requestHash هستند که برای محافظت در برابر دستکاری و حملات مشابه استفاده می‌شود. در این فیلد، باید خلاصه‌ای از تمام مقادیر مرتبط از درخواست برنامه خود را وارد کنید. برای محافظت از درخواست‌های استاندارد برنامه خود، راهنمای نحوه استفاده از اتصال محتوا را دنبال کنید.

درخواست‌های کلاسیک API دارای فیلدی به نام nonce (مخفف number once) هستند که برای محافظت در برابر انواع خاصی از حملات، مانند حملات تکرار و دستکاری، استفاده می‌شود. برای محافظت از درخواست‌های کلاسیک برنامه خود، راهنمایی‌های مربوط به نحوه تولید nonce را دنبال کنید.

از ذخیره احکام یکپارچگی در حافظه پنهان (caching) خودداری کنید

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

یک استراتژی اجرایی چند مرحله‌ای داشته باشید

حکم یکپارچگی API Play Integrity طیف وسیعی از پاسخ‌های ممکن را ارائه می‌دهد که امکان ایجاد یک استراتژی ضد سوءاستفاده با چندین لایه اجرایی را فراهم می‌کند. شما می‌توانید این کار را با پیکربندی سرور backend برنامه خود انجام دهید تا بسته به هر پاسخ یا گروه پاسخ‌های ممکن، رفتار متفاوتی داشته باشد.

همچنین می‌توانید با انتخاب دریافت برچسب‌های دستگاه اضافی در پاسخ API خود از Play Console، استراتژی اجرای خود را بر اساس قابلیت اعتماد دستگاه، سطح‌بندی کنید. هر دستگاه تمام برچسب‌هایی را که معیارهای آن را برآورده می‌کند، برمی‌گرداند. به عنوان مثال، پس از انتخاب دریافت تمام برچسب‌های دستگاه، می‌توانید به دستگاهی که MEETS_STRONG_INTEGRITY ، MEETS_DEVICE_INTEGRITY و MEETS_BASIC_INTEGRITY را برمی‌گرداند، بیشتر از دستگاهی که فقط MEETS_BASIC_INTEGRITY را برمی‌گرداند، اعتماد کنید. در هر سناریو می‌توانید پاسخ متفاوتی از سرور دریافت کنید.

ارسال طیف وسیعی از پاسخ‌ها از سرور به برنامه شما

تکرار کردن طیف وسیعی از نتایج تصمیم‌گیری، دشوارتر از ارسال یک پاسخ دودویی Allow/Deny از سرور به برنامه برای هر پاسخ است. به عنوان مثال، می‌توانید از مجموعه‌ای از پاسخ‌های مرتبط مانند Allow، Allow با محدودیت‌ها، Allow با محدودیت‌ها پس از تکمیل CAPTCHA و Deny استفاده کنید.

تشخیص سوءاستفاده مکرر با استفاده از فراخوانی دستگاه، ضمن حفظ حریم خصوصی کاربر

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

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

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

تشخیص سوءاستفاده در مقیاس بزرگ با استفاده از فعالیت اخیر دستگاه

از ویژگی فعالیت اخیر دستگاه در API یکپارچگی Play برای یافتن دستگاه‌هایی که تعداد زیادی توکن یکپارچگی درخواست می‌کنند، استفاده کنید. سوءاستفاده‌کنندگان با فعالیت زیاد معمولاً نتایج تأیید معتبر را از دستگاه‌های واقعی تولید می‌کنند و آنها را در اختیار ربات‌ها قرار می‌دهند تا حملات به دستگاه‌های روت‌شده و شبیه‌سازها را خودکار کنند. می‌توانید از سطح فعالیت اخیر دستگاه برای بررسی تعداد تأییدیه‌های تولید شده توسط برنامه خود در آن دستگاه در ساعت گذشته استفاده کنید.

نمایش پیام‌های خطای قابل پیگیری

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

برای مشکلات یا قطعی‌های غیرمنتظره برنامه داشته باشید

داشبورد وضعیت پخش، اطلاعاتی در مورد وضعیت سرویس Play Integrity API به همراه اطلاعاتی در مورد هرگونه اختلال و قطعی را نشان می‌دهد. شما باید از قبل برنامه‌ریزی کنید که در صورت وقوع قطعی گسترده در Play Integrity API، سرور backend شما چگونه عمل کند. توجه داشته باشید که سرور backend شما باید در صورت ابطال کلیدهای Android Platform Key Attestation مخصوص دستگاه‌ها، آماده عملکرد باشد.

راهکارهای جامع برای مقابله با کلاهبرداری سازمانی را در نظر بگیرید

مشتریان سازمانی که به دنبال یک راه‌حل کامل برای مدیریت کلاهبرداری و ربات هستند، می‌توانند reCAPTCHA Enterprise را برای موبایل خریداری کنند که شامل SDKهایی برای اندروید است که امتیازهای ریسک کلاهبرداری را برای توسعه‌دهندگان ارائه می‌دهد. reCAPTCHA Enterprise به‌طور خودکار سیگنال‌های Play Integrity API را شامل می‌شود و آنها را با سیگنال‌های شبکه و برنامه reCAPTCHA برای مشتریان ترکیب می‌کند و یک راه‌حل مدیریت کلاهبرداری بدون مشکل و نامرئی را به‌صورت آماده ارائه می‌دهد. همچنین می‌تواند از برنامه‌های اندرویدی که Play Integrity API در آنها در دسترس نیست، محافظت کند.

هنگام دسترسی به ویژگی‌های با ارزش بالا یا حساس، ترافیک پرخطر را به چالش بکشید

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

شرایط خدمات و ایمنی داده‌ها

با دسترسی یا استفاده از API Play Integrity، شما با شرایط خدمات API Play Integrity موافقت می‌کنید. لطفاً قبل از دسترسی به API، تمام شرایط و سیاست‌های مربوطه را مطالعه و درک کنید.

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