נלחמים בהונאות ובהתנהלות פוגעת

ככל שהאפליקציה שלכם צוברת פופולריות, היא עלולה למשוך גם תשומת לב לא רצויה מצד משתמשים זדוניים שרוצים לנצל לרעה את האפליקציה. במאמר הזה מפורטות המלצות שיעזרו לכם למנוע את ההתקפות האלה על שילוב החיוב באפליקציה, ולהקטין את ההשפעה של ניצול לרעה באפליקציה.

העברת לוגיקה רגישה אל ה-Backend

ככל שעיצוב האפליקציה מאפשר זאת, כדאי להעביר מידע אישי רגיש ולוגיקה לשרת backend שאתם שולטים בו. ככל שיש יותר נתונים ולוגיקה במכשיר קצה, כך הוא פגיע יותר לשינויים או לזיוף.

לדוגמה, במשחק שחמט באינטרנט צריך לאמת את כל המהלכים בקצה העורפי במקום להניח שהקצה החזיתי תמיד שולח מהלכים חוקיים.

בנוסף, אם אתם מוצאים נקודות חולשה או בעיות אבטחה, בהתאם לעיצוב המערכת, יכול להיות שיהיה קל יותר לבצע ניפוי באגים, לתקן ולפרוס עדכונים בחלק האחורי של האתר ולא בחלק הקדמי.

אימות רכישות לפני הענקת הרשאות

מקרה מיוחד של מידע אישי רגיש ולוגיקה שצריך לטפל בהם בקצה העורפי הוא אימות רכישה ואישור שלה. אחרי שמשתמש מבצע רכישה, צריך לבצע את הפעולות הבאות:

  1. שולחים את purchaseToken המתאים לשרת העורפי. כלומר, אתם צריכים לשמור תיעוד של כל הערכים של purchaseToken לכל הרכישות.
  2. מוודאים שהערך של purchaseToken ברכישה הנוכחית לא זהה לאף אחד מהערכים הקודמים של purchaseToken. purchaseToken הוא ערך ייחודי גלובלית, כך שאפשר להשתמש בו בבטחה כמפתח ראשי במסד הנתונים.
  3. כדי לוודא עם Google שהרכישה לגיטימית, אפשר להשתמש בנקודות הקצה Purchases.products:get או Purchases.subscriptionsv2:get בממשק API של Google Play למפתחים.
  4. אם הרכישה לגיטימית ולא נעשה בה שימוש בעבר, אפשר להעניק זכאות לפריט באפליקציה או למינוי.
  5. במינויים, אם הערך linkedPurchaseToken מוגדר ב-Purchases.subscriptionsv2:get, צריך גם להסיר את linkedPurchaseToken ממסד הנתונים ולבטל את ההרשאה שניתנה ל-linkedPurchaseToken, כדי לוודא שכמה משתמשים לא מקבלים הרשאה לאותה רכישה.
  6. צריך להעניק זכאות רק כשמצב הרכישה הוא PURCHASED, ולהקפיד לטפל ברכישות PENDING בצורה נכונה. אם יש עלייה חדה במספר הרכישות של CANCELED, יכול להיות שאתם מעניקים זכויות גישה כשהרכישה עדיין במצב PENDING. מידע נוסף זמין במאמר בנושא טיפול בעסקאות בהמתנה.
  7. אחרי שמעניקים הרשאה, אם רוצים להשתמש במוצר מתכלה ולאשר את השימוש בו, צריך להשתמש ב-Purchases.products:consume Play Developer API בשרת הקצה העורפי המאובטח. כדי לאשר רכישה של מוצר חד-פעמי או מינוי, צריך לבצע קריאה לנקודת קצה ל-API הרלוונטית ב-Play Developer API, כלומר Purchases.products:acknowledge או Purchases.subscriptions:acknowledge, בשרת הבק-אנד המאובטח. האישור נדרש כי הוא מודיע ל-Google Play שהמשתמש קיבל הרשאה לרכישה. אחרי שהמשתמשים יאשרו את הרכישה, באפליקציה שלך חייב להופיע אישור על הרכישה.

    שימו לב שאפשר לאשר את הרכישה או להשתמש בה בצד הלקוח דרך האפליקציה, אבל ממשקי API בצד השרת מספקים הגנה נוספת מפני בעיות כמו קישוריות רשת לקויה ופעילות זדונית. לדוגמה, נניח שמשתמש רכש פריט מהאפליקציה שלך, אבל איבד את החיבור לרשת בזמן שהרכישה הייתה בתהליך אימות. אם לא יקבלו אישור מהשרת, יכול להיות שהם יצטרכו להיכנס שוב דרך האפליקציה כדי להשלים את תהליך האישור. אחרת, אם המשתמש לא יתחבר מחדש תוך שלושה ימים, יתקבל החזר כספי אוטומטי על הרכישה בגלל שלא התקבל אישור רכישה. אישור מהשרת מונע את התרחיש הזה. האישור נשלח ברגע ש-Google Play מודיע לשרת שהרכישה תקפה.

    מידע נוסף על אישור רכישות וצריכה זמין במאמר בנושא עיבוד רכישות.

הגנה על תוכן לא נעול

כדי למנוע ממשתמשים זדוניים להפיץ מחדש את התוכן שלא נעול, אל תצרפו אותו לקובץ ה-APK. במקום זאת, צריך לבצע אחת מהפעולות הבאות:

  • להשתמש בשירות בזמן אמת כדי להעביר את התוכן, כמו פיד תוכן. הצגת תוכן באמצעות שירות בזמן אמת מאפשרת לכם גם לשמור על עדכניות התוכן.
  • שימוש בשרת מרוחק כדי להעביר את התוכן.

כשמעבירים תוכן משרת מרוחק או משירות בזמן אמת, אפשר לאחסן את התוכן הלא נעול בזיכרון המכשיר או בכרטיס ה-SD של המכשיר. אם אתם מאחסנים תוכן בכרטיס SD, הקפידו להצפין את התוכן ולהשתמש במפתח הצפנה ספציפי למכשיר.

זיהוי וטיפול ברכישות מבוטלות

רכישות שבוטלו הן רכישות שבוטלו, נשללה מהן הגישה או שהן חויבו מחדש. אם רכישה שבוטלה העניקה בעבר פריטים בתוך האפליקציה או תוכן אחר למשתמש, אפשר להשתמש ב-Voided Purchases API כדי לקבל את הסיבה לביטול הרכישה, יחד עם כל התוכן המשויך שאפשר להחזיר.

אפשר לבטל רכישות של פריטים באפליקציה ומינויים ממגוון סיבות, כולל הסיבות הבאות:

  • רכישה בוטלה על ידי המשתמש, על ידי המפתח או על ידי Google (כולל רכישות שבוטלו אוטומטית ולא אושרו). במקרה של מינויים, חשוב לדעת שהכוונה היא לביטול הרכישה של מינוי, ולא לביטול המינוי עצמו.
  • בוצע צ'ארג' בק לרכישה.
  • מפתח האפליקציה מבטל הזמנה של משתמש או מחזיר לו כסף, ומסמן את האפשרות 'ביטול' במסוף.

על סמך הסיבה לביטול הרכישה, ובהתחשב בנתוני ההתנהגות הקודמים של המשתמש, תוכלו להחליט על דרך פעולה. מומלץ להטמיע אחת או יותר מהאפשרויות הבאות:

  • ביצוע החזרים: כשמבטלים רכישה, אפשר לבצע החזר על פריטים שלא נעשה בהם שימוש כאילו הם מעולם לא נרכשו. לדוגמה, אם רכישה של כסף וירטואלי במשחק בוטלה, אפשר להחזיר מטבע שכבר הוענק למשתמש. אם המשתמש כבר הוציא את הכסף, כדאי להגדיר את יתרת המטבע כערך שלילי ולהגביל את הפעילות באפליקציה ואת הרכישות העתידיות עד שיתרת המטבע תהיה חיובית.
  • הטמעה של מספר אזהרות: כדאי לשקול נקיטת פעולות פחות קיצוניות כלפי מפיצים שמבצעים הפרה בפעם הראשונה, כמו הצגת אזהרות בתוך האפליקציה. במקרים של הפרות חוזרות, כדאי לשקול אמצעים חמורים יותר.
  • השבתה זמנית של רכישות: בדומה להטמעה של מספר פסילות, כדאי להשבית רכישות למשתמשים עם רכישות שבוטלו עד שתהיה לכם אפשרות לבדוק לעומק למה הרכישות בוטלו.
  • חסימת הגישה לאפליקציה באופן זמני או קבוע: במקרים קיצוניים של פעילות זדונית חוזרת, כדאי לשקול חסימת הגישה לאפליקציה באופן זמני או קבוע.
  • ביצוע קריאות תכופות ל-API של רכישות שבוטלו: כשמזהים רכישה אחת או יותר שבוטלו, כדאי לבצע קריאות תכופות יותר ל-API של רכישות שבוטלו כדי לבטל את הרכישות לפני שהמשתמש יכול לצרוך אותן. מידע נוסף על מכסות של Voided Purchases API זמין במאמרי העזרה של ה-Voided Purchases API.

איך עוזרים ל-Google לזהות הונאות לפני שהן קורות

חלק מסוגי ההונאה קשורים למשתמשים זדוניים שיוצרים כמה חשבונות Google וכמה חשבונות באפליקציה כדי להסתיר את הפעילות שלהם.

כדי לעזור ל-Google למפות חשבונות Google לחשבונות באפליקציה, אפשר להשתמש בשיטות setObfuscatedAccountId ו-setObfuscatedProfileId בכלי ליצירת BillingFlowParams.

‫Google משתמשת בנתונים האלה כדי לזהות התנהגות חשודה ולחסום סוגים מסוימים של עסקאות הונאה לפני שהן מושלמות.

פעולות נגד הפרות של סימנים מסחריים והפרת זכויות יוצרים

אם אתם משתמשים בשרת מרוחק כדי להציג או לנהל תוכן, האפליקציה צריכה לאמת את מצב הרכישה של התוכן הלא נעול בכל פעם שמשתמש ניגש לתוכן. כך תוכלו לבטל את השימוש כשצריך ולצמצם את הפיראטיות. אם אתם רואים שהתוכן שלכם מופץ מחדש ב-Google Play, חשוב לפעול במהירות ובנחישות. פרטים נוספים זמינים בדף שאלות נפוצות בנושא זכויות יוצרים במרכז העזרה בנושא זכויות יוצרים.