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

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

העברת לוגיקה רגישת לצד העורפי

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

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

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

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

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

  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 שהמשתמש קיבל הרשאה לרכישה. צריך לאשר את הרכישה מיד אחרי שמעניקים את ההרשאה.

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

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

הגנה על התוכן שנפתח

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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