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

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

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

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

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

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

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

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

  1. أرسِل purchaseToken المقابل إلى الخلفية. وهذا يعني أنّه ينبغي الاحتفاظ بسجلّ لجميع قيم purchaseToken لجميع عمليات الشراء.
  2. تأكَّد من أنّ قيمة purchaseToken لعملية الشراء الحالية لا تشبه أي قيم purchaseToken سابقة. القيمة purchaseToken فريدة عالميًا، لذا يمكنك استخدام هذه القيمة بأمان كمفتاح أساسي في قاعدة بياناتك.
  3. استخدِم نقاط نهاية Purchases.products:get أو Purchases.subscriptionsv2:get في Google Play Developer API للتحقّق مع Google من أنّ الشراء مشروع.
  4. إذا كانت عملية الشراء مشروعة ولم يتم استخدامها في السابق، يمكنك منح إذن الوصول إلى العنصر أو الاشتراك داخل التطبيق بأمان.
  5. بالنسبة إلى الاشتراكات، عند ضبط قيمة linkedPurchaseToken في Purchases.subscriptionsv2:get، عليك أيضًا إزالة linkedPurchaseToken من قاعدة بياناتك وإلغاء الإذن الذي تم منحهlinkedPurchaseToken لضمان عدم أهلية مستخدمين متعدّدين للاستفادة من عملية الشراء نفسها.
  6. يجب عدم منح الإذن إلا عندما تكون حالة الشراء هي PURCHASED ويجب التأكّد من معالجة عمليات الشراء PENDING بشكل صحيح. إذا حدث ارتفاع مفاجئ في عدد عمليات شراء CANCELED، قد يعني ذلك أنّك تمنح الأذونات عندما تكون عملية الشراء في حالة PENDING. يمكنك الاطّلاع على مزيد من المعلومات في مقالة معالجة المعاملات المعلّقة.
  7. بعد منح الإذن بالوصول، إذا أردت استخدام أحد المنتجات التي يمكن استهلاكها والإقرار بها، استخدِم واجهة برمجة التطبيقات 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، احرص على اتّخاذ إجراء سريع وحاسم. لمزيد من التفاصيل، يُرجى الاطّلاع على صفحة الأسئلة الشائعة حول حقوق الطبع والنشر في "مركز مساعدة حقوق الطبع والنشر".