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

تلتزم 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، تحقَّق من أنّ ربط عملية الشراء يتطابق مع حساب المستخدم المتوقّع في نظامك. نفِّذ أي عمليات تحقّق إضافية من إساءة الاستخدام أو المخاطر أو الأمان يطلبها الخادم الخلفي.
    • عمليات ردّ الأموال الصريحة لعمليات الشراء غير المشروعة: إذا لم تجتز عملية الشراء عمليات التحقّق من صحتها أو عمليات التحقّق من إساءة الاستخدام، لا تمنح الإذن. بدلاً من السماح بردّ الأموال تلقائيًا مقابل عملية الشراء بسبب عدم الإقرار بها (وهو أمر غامض لأنّه يمكن أن ينتج أيضًا عن انتهاء مهلة المعالجة)، ننصحك بردّ الأموال صراحةً مقابل عملية الشراء باستخدام نقطة النهاية Orders:refund (أو واجهة Play Developer API مشابهة) مع ضبط المعلَمة revoke على true. يضمن ضبط المعلَمة revoke إبطال إمكانية الوصول، وبالتالي لن يعود بإمكان المستخدم الوصول إلى عملية الشراء، كما يمنح Google Play إشارة واضحة بأنّ المطوّر رفض عملية الشراء.
  • بالنسبة إلى الاشتراكات، عندما يتم ضبط linkedPurchaseToken في Purchases.subscriptionsv2:get، عليك أيضًا إزالة linkedPurchaseToken من قاعدة البيانات وإبطال الإذن الممنوح لـ linkedPurchaseToken لضمان عدم حصول عدة مستخدمين على الإذن بعملية الشراء نفسها.
  • عليك منح الإذن فقط عندما تكون حالة عملية الشراء PURCHASED والتأكّد من معالجة عمليات الشراء PENDING بشكل صحيح. إذا كان هناك ارتفاع في عمليات الشراء 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 (بما في ذلك عمليات الشراء التي تم إلغاؤها تلقائيًا ولم يتم الإقرار بها). بالنسبة إلى الاشتراكات، يُرجى العِلم أنّ ذلك يشير إلى إلغاء شراء الاشتراك، بدلاً من إلغاء الاشتراك نفسه.
  • تم ردّ الأموال مقابل عملية شراء.
  • يلغي مطوّر التطبيق أو يردّ الأموال مقابل طلب المستخدم ويضع علامة في الخيار "إبطال" في وحدة التحكّم. استنادًا إلى سبب إلغاء عملية الشراء، مع أخذ بيانات سلوك المستخدم السابقة في الاعتبار، يمكنك تحديد مسار العمل. ننصحك بتنفيذ إجراء واحد أو أكثر مما يلي:

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

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

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

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

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

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

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

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

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

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

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