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

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

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

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

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

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

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

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

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

رصد عمليات الشراء التي تم إلغاؤها والتعامل معها

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

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

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

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

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

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

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

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

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

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

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