مكافحة الاحتيال وإساءة الاستخدام

تلتزم Google Play بضمان الأمان لكلٍّ من المستخدمين والمطوّرين. نحن ندرك أنّ إنشاء مؤسسة تطبيقات ناجحة يعتمد على منصة موثوق بها تحمي عائد استثمارك من خلال الدفاع بشكل استباقي عن مؤسستك ضدّ الجهات الخبيثة.

تصف هذه المستندات اقتراحات لمنع الهجمات على نظام الفوترة المدمج وتقليل تأثير إساءة الاستخدام في تطبيقك.

تحسين إجراءات الحماية

يمكن لواجهات برمجة التطبيقات والأدوات التالية التخفيف من المخاطر في تطبيقك:

  • واجهة Voided Purchases API: لإلغاء إمكانية الوصول إلى الطلبات المُلغاة
  • معرّف الحساب المموّه: للمساعدة في رصد عمليات الشراء المتعدّدة التي يتم إجراؤها على الجهاز نفسه في فترة قصيرة
  • **الاستهلاك من جهة الخادم**: تنقل أدوات مثل Purchases.products:consume منطق المؤسسة إلى أنظمة الخلفية الآمنة، ما يمنع التلاعب من جهة العميل. بالإضافة إلى استخدام واجهات برمجة التطبيقات هذه، ننصحك باتّباع أفضل الممارسات التالية لزيادة أمان عمليات التكامل من الوصول غير المصرّح به.

منع تزييف الموقع الجغرافي

توفّر Google Play إجراءات حماية مضمّنة لمنع الجهات الخبيثة من استخدام مواقع جغرافية مزيّفة لاستغلال الاختلافات في العملات الإقليمية (المعروفة أيضًا باسم تزييف الموقع الجغرافي)، وإساءة استخدام العروض الترويجية والحوافز للاشتراكات، ومحاولة الاحتيال على بطاقات الهدايا.

نقل المنطق الحسّاس إلى نظام الخلفية

ننصحك بنقل البيانات والمنطق الحسّاسَين إلى خادم خلفية تتحكّم فيه، وذلك بقدر ما يسمح به تصميم تطبيقك. كلّما زادت البيانات والمنطق في جهاز من جهة العميل، زادت احتمالية تعديلها أو التلاعب بها.

على سبيل المثال، يجب أن تتحقّق لعبة الشطرنج على الإنترنت من صحة جميع الحركات في نظام الخلفية بدلاً من الوثوق بأنّ الواجهة الأمامية ترسل دائمًا حركات قانونية.

بالإضافة إلى ذلك، إذا عثرت على ثغرات أمنية أو مشاكل أمان، قد يكون من الأسهل تصحيح الأخطاء وإصلاحها ونشر التحديثات على نظام الخلفية بدلاً من الواجهة الأمامية، وذلك حسب تصميم نظامك.

التحقّق من عمليات الشراء قبل منح الأذونات

يجب التعامل مع التحقّق من عمليات الشراء والإقرار بها في نظام الخلفية، لأنّها حالة خاصة من البيانات والمنطق الحسّاسَين. بعد أن يُجري المستخدم عملية شراء، عليك اتّخاذ الإجراءات التالية:

  • إرسال purchaseToken المقابل إلى نظام الخلفية وهذا يعني أنّه عليك الاحتفاظ بسجلّ لجميع قيم purchaseToken لكل عمليات الشراء.
  • التحقّق من أنّ قيمة purchaseToken لعملية الشراء الحالية لا تتطابق مع أي قيم purchaseToken سابقة. إنّ purchaseToken فريد على مستوى العالم، لذا يمكنك استخدامه بأمان كمفتاح أساسي في قاعدة بياناتك.
  • استخدِم نقطتَي النهاية Purchases.products:get أو Purchases.subscriptionsv2:get في Google Play Developer API للتحقّق من Google من أنّ عملية الشراء مشروعة.
  • إذا كنت تعتقد أنّ عملية الشراء مشروعة ولم يتم استخدامها أو معالجتها في الماضي، وأنّ المستخدم يستوفي جميع معايير الأهلية وعمليات التحقّق من الاحتيال، يمكنك بعد ذلك منح الإذن بأمان للسلعة أو الاشتراك داخل التطبيق.
    • عمليات التحقّق من الأهلية وإساءة الاستخدام: تأكَّد من أنّ المستخدم لا يزال مؤهلاً للحصول على السلعة. إذا ضبطت مسار الفوترة باستخدام obfuscatedAccountId أو obfuscatedProfileId، تأكَّد من أنّ ربط عملية الشراء يتطابق مع حساب المستخدم المتوقّع في نظامك. نفِّذ أي عمليات تحقّق إضافية من إساءة الاستخدام أو المخاطر أو الأمان يتطلبها نظام الخلفية.
    • عمليات ردّ الأموال الصريحة لعمليات الشراء غير المشروعة: إذا لم تجتز عملية الشراء عمليات التحقّق من صحتها أو عمليات التحقّق من إساءة الاستخدام، لا تمنح الإذن ولا تقرّ بعملية الشراء أو تستهلكها. بدلاً من السماح بردّ الأموال تلقائيًا بسبب عدم إعلام بالاستلام (وهو أمر غامض لأنّه يمكن أن ينتج أيضًا عن المهلة)، يمكنك إبطال عملية الشراء وردّ الأموال بشكل صريح باستخدام نقطة النهاية purchases.subscriptionsv2:revoke (مع "fullRefund": {}) للاشتراكات أو نقطة النهاية Orders:refund مع ضبط المعلَمة revoke على true للمنتجات المدفوعة لمرة واحدة. يضمن إلغاء عملية الشراء عدم حصول المستخدم على الإذن بها، ويمنح Google Play إشارة واضحة بأنّ المطوّر رفض عملية الشراء.
  • بالنسبة إلى الاشتراكات، عندما يتم ضبط linkedPurchaseToken في Purchases.subscriptionsv2:get، عليك أيضًا إزالة linkedPurchaseToken من قاعدة بياناتك وإلغاء الإذن الممنوح لـ linkedPurchaseToken لضمان عدم حصول تعدُّد المستخدمين على الإذن بعملية الشراء نفسها.
  • عليك منح إذن الاستخدام فقط عندما تكون حالة عملية الشراء PURCHASED والتأكّد من التعامل مع عمليات الشراء المُعلّقة بشكل صحيح. إذا حدث ارتفاع في عمليات الشراء CANCELED، قد تكون تمنح الأذونات عندما تكون حالة عملية الشراء لا تزال PENDING. يمكنك الاطّلاع على مزيد من المعلومات في مقالة التعامل مع المعاملات المعلقة.
  • بعد منح الإذن، إذا أردت استهلاك منتج قابل للاستهلاك والإقرار به، استخدِم Purchases.products:consume Play Developer API على خادم الخلفية الآمن. للإقرار بمنتج غير قابل للاستهلاك أو اشتراك، استدعِ نقطة نهاية Play Developer API ذات الصلة، إما Purchases.products:acknowledge أو Purchases.subscriptions:acknowledge على خادم الخلفية الآمن. الإقرار مطلوب، لأنّه يُعلم Google Play بأنّه تم منح المستخدم الإذن بعملية الشراء. عليك الإقرار بعملية الشراء فور منح الإذن.

    يُرجى العِلم أنّه على الرغم من أنّه يمكنك الإقرار بعملية الشراء أو استهلاكها من جهة العميل من خلال تطبيقك، توفّر واجهات برمجة التطبيقات من جهة الخادم حماية إضافية من مشاكل مثل ضعف الاتصال بالشبكة والنشاط الخبيث. على سبيل المثال، لنفترض أنّ مستخدمًا اشترى سلعة من تطبيقك ولكنّه فقد الاتصال بالشبكة أثناء التحقّق من صحة عملية الشراء. بدون الإقرار من جهة الخادم، قد يحتاج المستخدم إلى تسجيل الدخول مرة أخرى من خلال التطبيق لإكمال عملية الإقرار. وإلا، إذا لم يسجّل المستخدم الدخول مرة أخرى في غضون ثلاثة أيام، فسيتم ردّ الأموال تلقائيًا بسبب عدم الإقرار بعملية الشراء. يمنع الإقرار من جهة الخادم هذا السيناريو من خلال إرسال الإقرار فور إعلام Google Play للخادم بأنّ عملية الشراء صالحة.

لمزيد من المعلومات حول الإقرار بعملية الشراء واستهلاكها، يُرجى الاطّلاع على مقالة معالجة عمليات الشراء.

حماية المحتوى الذي تم إلغاء حظره

لمنع المستخدمين الخبيثين من إعادة توزيع المحتوى الذي تم إلغاء حظره، لا تضمّنه في ملف APK. بدلاً من ذلك، اتّبِع أحد الإجراءَين التاليَين:

  • استخدِم خدمة في الوقت الفعلي لإرسال المحتوى، مثل خلاصة محتوى. يسمح لك إرسال المحتوى من خلال خدمة في الوقت الفعلي أيضًا بالحفاظ على حداثة المحتوى.
  • استخدِم خادمًا بعيدًا لإرسال المحتوى. عند إرسال المحتوى من خادم بعيد أو خدمة في الوقت الفعلي، يمكنك تخزين المحتوى الذي تم إلغاء حظره في ذاكرة الجهاز أو تخزينه على بطاقة SD الخاصة بالجهاز. إذا خزّنت المحتوى على بطاقة SD، احرص على تشفيره واستخدِم مفتاح تشفير خاصًا بالجهاز.

رصد عمليات الشراء المُلغاة والتعامل معها

عمليات الشراء المُلغاة هي عمليات الشراء التي تم إلغاؤها أو إبطالها أو استردادها. إذا كانت عملية الشراء المُلغاة قد منحت سابقًا منتجات داخل التطبيق أو محتوى آخر للمستخدم، يمكنك استخدام Voided Purchases API للحصول على سبب إلغاء عملية الشراء وأي محتوى مرتبط يمكنك استرداده.

يمكن إلغاء عمليات شراء المنتجات داخل التطبيق والاشتراكات لعدة أسباب، بما في ذلك ما يلي:

  • تم إلغاء عملية شراء، إما من قِبل المستخدم أو المطوّر أو Google (بما في ذلك عمليات الشراء التي تم إلغاؤها تلقائيًا ولم يتم الإقرار بها). بالنسبة إلى الاشتراكات، يُرجى العِلم أنّ هذا يشير إلى إلغاء شراء اشتراك، بدلاً من إلغاء الاشتراك نفسه.
  • تم استرداد عملية شراء.
  • يلغي مطوّر التطبيق أو يردّ أموال طلب المستخدم ويضع علامة في المربّع "إلغاء" في Play Console. استنادًا إلى سبب إلغاء عملية الشراء، مع أخذ بيانات سلوك المستخدم السابقة في الاعتبار، يمكنك تحديد مسار عمل. ننصحك بتنفيذ إجراء واحد أو أكثر مما يلي:

  • استرداد السلع: عند إلغاء عملية شراء، يمكنك استرداد السلع غير المستخدَمة كما لو لم يتم شراؤها مطلقًا. على سبيل المثال، إذا تم إلغاء عملية شراء عملة داخل اللعبة، يمكنك استرداد العملة التي تم منحها للمستخدم سابقًا. في حال أنفق المستخدم العملة، ننصحك بضبط رصيد العملة على قيمة سالبة وتقييد نشاط التطبيق وعمليات الشراء المستقبلية إلى أن يصبح رصيد العملة موجبًا.

  • تنفيذ نظام الإنذارات المتعدّدة: ننصحك باتّخاذ إجراءات أقل صرامةً ضدّ المخالفين للمرة الأولى، مثل عرض تحذيرات داخل التطبيق. بالنسبة إلى المخالفين المتكرّرين، ننصحك باتّخاذ إجراءات أكثر صرامةً.

  • إيقاف عمليات الشراء مؤقتًا: على غرار نظام الإنذارات المتعدّدة، ننصحك بإيقاف عمليات الشراء مؤقتًا للمستخدمين الذين لديهم عمليات شراء مُلغاة إلى أن تتمكّن من التحقيق بشكل أكثر شمولاً في سبب إلغاء عمليات الشراء.

  • منع الوصول إلى تطبيقك مؤقتًا أو نهائيًا: في الحالات القصوى التي تتضمّن نشاطًا خبيثًا متكرّرًا، ننصحك بمنع الوصول إلى تطبيقك، إما مؤقتًا أو نهائيًا.

  • إجراء طلبات متكرّرة إلى Voided Purchases API: عند رصد عملية شراء مُلغاة واحدة أو أكثر، ننصحك بإجراء طلبات متكرّرة إلى Voided Purchases API لاسترداد عمليات الشراء قبل أن يتمكّن المستخدم من استهلاكها. يمكنك الاطّلاع على مزيد من المعلومات حول حصص Voided Purchases API في مستندات Voided Purchases API.

مساعدة Google في رصد الاحتيال قبل حدوثه

ترتبط بعض أنواع الاحتيال بالمستخدمين الضارين الذين يُنشئون حسابات متعدّدة على Google وداخل التطبيق لإخفاء نشاطهم.

استخدِم الطريقتَين setObfuscatedAccountId و setObfuscatedProfileId في أداة الإنشاء لـ BillingFlowParams لمساعدة Google في ربط حسابات Google بالحسابات داخل التطبيق.

تستخدِم Google هذه البيانات لرصد السلوك المريب وحظر بعض أنواع المعاملات الاحتيالية قبل إكمالها.

اتّخاذ إجراءات ضدّ انتهاك العلامات التجارية وحقوق الطبع والنشر

إذا كنت تستخدم خادمًا بعيدًا لإرسال المحتوى أو إدارته، اطلب من تطبيقك التحقّق من حالة شراء المحتوى الذي تم إلغاء حظره في كل مرة يصل فيها المستخدم إلى المحتوى. يسمح لك ذلك بإلغاء الاستخدام عند الضرورة وتقليل القرصنة. إذا رأيت أنّ المحتوى الخاص بك يتم إعادة توزيعه على Google Play، احرص على التصرّف بسرعة وبشكل حاسم. لمزيد من التفاصيل، يُرجى الاطّلاع على صفحة الأسئلة الشائعة حول حقوق الطبع والنشر في مركز المساعدة بخصوص حقوق الطبع والنشر.