Zwalczanie oszustw i nadużyć

Google Play dokłada wszelkich starań, aby zapewnić bezpieczeństwo zarówno użytkownikom, jak i deweloperom. Wiemy, że budowanie dobrze prosperującej firmy zajmującej się aplikacjami zależy od zaufanej platformy, która zapewnia zwrot z inwestycji dzięki proaktywnej ochronie przed nieuczciwymi podmiotami.

W tym dokumencie znajdziesz rekomendacje, które pomogą Ci zapobiegać atakom na zintegrowane funkcje płatności i ograniczać skutki nadużyć w aplikacji.

Zwiększanie ochrony

Te interfejsy API i narzędzia mogą pomóc w ograniczeniu ryzyka w aplikacji:

  • Voided Purchases API: wycofaj dostęp do anulowanych zamówień.
  • Zaciemniony identyfikator konta: pomaga wykrywać sytuacje, w których na tym samym koncie w krótkim czasie dokonywane są zakupy na wielu urządzeniach.
  • Zużycie po stronie serwera: narzędzia takie jak Purchases.products:consume przenoszą logikę biznesową na bezpieczne serwery, co zapobiega manipulacjom po stronie klienta. Oprócz korzystania z tych interfejsów API platformy zastosuj te sprawdzone metody, aby jeszcze lepiej zabezpieczyć integracje przed nieautoryzowanym dostępem.

Zapobieganie fałszowaniu lokalizacji

Google Play zapewnia wbudowane zabezpieczenia, które uniemożliwiają nieuczciwym podmiotom wykorzystywanie fałszywych lokalizacji do wykorzystywania różnic w walutach regionalnych (tzw. spoofing lokalizacji), nadużywania promocji i zachęt dotyczących subskrypcji oraz prób oszustw związanych z kartami podarunkowymi.

Przenoszenie wrażliwej logiki na backend

W miarę możliwości przenieś dane wrażliwe i logikę do kontrolowanego przez siebie serwera backendu. Im więcej danych i logiki znajduje się na urządzeniu klienckim, tym bardziej jest ono podatne na modyfikacje lub manipulacje.

Na przykład internetowa gra w szachy powinna weryfikować wszystkie ruchy na backendzie, zamiast ufać, że frontend zawsze wysyła prawidłowe ruchy.

Ponadto, jeśli znajdziesz luki w zabezpieczeniach lub problemy z bezpieczeństwem, w zależności od projektu systemu łatwiej będzie debugować, naprawiać i wdrażać aktualizacje na backendzie niż na frontendzie.

Weryfikowanie zakupów przed przyznaniem uprawnień

Szczególnym przypadkiem danych wrażliwych i logiki, które powinny być obsługiwane na backendzie, jest weryfikacja zakupu i potwierdzenie. Gdy użytkownik dokona zakupu, wykonaj te czynności:

  • Wyślij odpowiedni token zakupu do backendu. Oznacza to, że musisz prowadzić rejestr wszystkich wartości purchaseToken dla wszystkich zakupów.
  • Sprawdź, czy wartość purchaseToken dla bieżącego zakupu nie pasuje do żadnej z wartości purchaseToken z poprzednich zakupów. Wartość purchaseToken jest unikalna w skali globalnej, więc możesz jej bezpiecznie używać jako klucza podstawowego w bazie danych.
  • Użyj punktów końcowych Purchases.products:get lub Purchases.subscriptionsv2:get w interfejsie Google Play Developer API, aby potwierdzić w Google, że zakup jest legalny.
  • Jeśli uważasz, że zakup jest zgodny z prawem, nie został wykorzystany ani przetworzony w przeszłości, a użytkownik spełnia wszystkie kryteria kwalifikacji i przeszedł wszystkie kontrole pod kątem oszustw, możesz bezpiecznie przyznać mu uprawnienia do produktu w aplikacji lub subskrypcji.
    • Sprawdzanie spełniania kryteriów i nadużyć: sprawdź, czy użytkownik nadal spełnia kryteria dotyczące produktu. Jeśli skonfigurowano proces płatności za pomocą parametru obfuscatedAccountId lub obfuscatedProfileId, sprawdź, czy mapowanie zakupu jest zgodne z oczekiwanym kontem użytkownika w Twoim systemie. Przeprowadź dodatkowe kontrole nadużyć, ryzyka lub bezpieczeństwa wymagane przez Twój backend.
    • Wyraźne zwroty środków za nielegalne zakupy: jeśli zakup nie przejdzie weryfikacji lub kontroli nadużyć, nie przyznawaj uprawnień. Zamiast automatycznie zwracać środki za zakup z powodu braku potwierdzenia (co jest niejednoznaczne, ponieważ może też wynikać z przekroczenia limitu czasu przetwarzania), wyraźnie zwróć środki za zakup za pomocą punktu końcowego Orders:refund (lub podobnego interfejsu Play Developer API) z parametrem revoke ustawionym na true. Ustawienie parametru revoke zapewnia, że dostęp zostanie cofnięty, a użytkownik nie będzie już miał prawa do zakupu. Daje to Google Play wyraźny sygnał, że zakup został odrzucony przez dewelopera.
  • W przypadku subskrypcji, gdy w wywołaniu Purchases.subscriptionsv2:get ustawiony jest parametr linkedPurchaseToken, należy również usunąć go z bazy danych i cofnąć uprawnienia przyznane temu tokenowi, aby mieć pewność, że wielu użytkowników nie ma uprawnień do tego samego zakupu.
  • Uprawnienia należy przyznawać tylko wtedy, gdy stan zakupu to PURCHASED. Pamiętaj, aby prawidłowo obsługiwać zakupy w stanie PENDING. Jeśli nastąpi nagły wzrost liczby ANULOWANYCH zakupów, może to oznaczać, że przyznajesz uprawnienia, gdy zakup jest nadal w stanie OCZEKUJĄCYM. Więcej informacji znajdziesz w artykule Obsługa transakcji oczekujących.
  • Gdy przyznasz uprawnienia, a chcesz wykorzystać i potwierdzić zakup produktu jednorazowego, użyj interfejsu Play Developer API Purchases.products:consume na bezpiecznym serwerze backendowym. Aby potwierdzić zakup produktu jednorazowego lub subskrypcji, wywołaj odpowiedni punkt końcowy API Play Developer, czyli Purchases.products:acknowledge lub Purchases.subscriptions:acknowledge, na bezpiecznym serwerze backendu. Potwierdzenie jest wymagane, ponieważ informuje Google Play o tym, że użytkownik ma uprawnienia do zakupionych treści. Powinieneś potwierdzić zakup od razu po przyznaniu uprawnień.

    Pamiętaj, że chociaż możesz potwierdzić lub wykorzystać zakup po stronie klienta za pomocą aplikacji, interfejsy API po stronie serwera zapewniają dodatkową ochronę przed problemami, takimi jak słabe połączenie sieciowe i złośliwa aktywność. Na przykład użytkownik kupił produkt w Twojej aplikacji, ale podczas weryfikacji zakupu utracił połączenie z siecią. Bez potwierdzenia serwera może być konieczne ponowne zalogowanie się w aplikacji, aby dokończyć proces potwierdzania. W przeciwnym razie, jeśli użytkownik nie zaloguje się ponownie w ciągu 3 dni, zakup zostanie automatycznie zwrócony z powodu braku potwierdzenia zakupu. Potwierdzenie serwera zapobiega tej sytuacji, ponieważ jest wysyłane, gdy tylko Google Play powiadomi serwer, że zakup jest ważny.

Więcej informacji o potwierdzaniu zakupu i wykorzystaniu znajdziesz w artykule Przetwarzanie zakupów.

Ochrona odblokowanych treści

Aby uniemożliwić złośliwym użytkownikom rozpowszechnianie odblokowanych treści, nie umieszczaj ich w pliku APK. Zamiast tego wykonaj jedną z tych czynności:

  • Używaj usługi w czasie rzeczywistym do przesyłania treści, np. źródła treści. Dostarczanie treści za pomocą usługi w czasie rzeczywistym pozwala też dbać o ich aktualność.
  • Używaj serwera zdalnego do dostarczania treści. Gdy dostarczasz treści z serwera zdalnego lub usługi działającej w czasie rzeczywistym, możesz przechowywać odblokowane treści w pamięci urządzenia lub na karcie SD. Jeśli przechowujesz treści na karcie SD, pamiętaj, aby je zaszyfrować i użyć klucza szyfrowania specyficznego dla urządzenia.

Wykrywanie i obsługa unieważnionych zakupów

Anulowane zakupy to zakupy, które zostały anulowane, cofnięte lub obciążone zwrotem środków. Jeśli anulowany zakup wcześniej przyznał użytkownikowi elementy w aplikacji lub inne treści, możesz użyć interfejsu Voided Purchases API, aby uzyskać informację o przyczynie anulowania zakupu oraz powiązane z nim treści, które możesz odzyskać.

Zakupy produktów w aplikacji i subskrypcji mogą zostać anulowane z różnych powodów, m.in.:

  • zakup zostanie anulowany przez użytkownika, dewelopera lub Google (w tym niepotwierdzone automatycznie anulowane zakupy); W przypadku subskrypcji pamiętaj, że chodzi o anulowanie zakupu subskrypcji, a nie anulowanie samej subskrypcji.
  • Zakup zostanie obciążony zwrotem środków.
  • Deweloper aplikacji anuluje zamówienie użytkownika lub zwraca mu środki i zaznacza w konsoli opcję „cofnij”. Na podstawie przyczyny anulowania zakupu i z uwzględnieniem wcześniejszych danych o zachowaniu użytkownika możesz podjąć odpowiednie działania. Zalecamy wdrożenie co najmniej jednego z tych rozwiązań:

  • Wycofywanie środków: gdy zakup zostanie anulowany, możesz wycofać niewykorzystane produkty, tak jakby nigdy nie zostały kupione. Jeśli na przykład zakup waluty w grze został anulowany, możesz odzyskać walutę, która została już przyznana użytkownikowi. Jeśli użytkownik wydał już walutę, rozważ ustawienie ujemnego salda waluty i ograniczenie aktywności w aplikacji oraz przyszłych zakupów do czasu, aż saldo waluty będzie dodatnie.

  • Wdrożenie systemu wielokrotnych ostrzeżeń: w przypadku pierwszego naruszenia zasad rozważ podjęcie mniej drastycznych działań, np. wyświetlenie ostrzeżenia w aplikacji. W przypadku osób, które wielokrotnie naruszają zasady, rozważ zastosowanie surowszych środków.

  • Tymczasowe wyłączenie zakupów: podobnie jak w przypadku wdrożenia wielokrotnych ostrzeżeń rozważ wyłączenie zakupów dla użytkowników, których zakupy zostały anulowane, dopóki nie uda Ci się dokładniej zbadać przyczyn anulowania.

  • Tymczasowe lub trwałe zablokowanie dostępu do aplikacji: w przypadku skrajnych sytuacji, w których powtarza się złośliwa aktywność, rozważ tymczasowe lub trwałe zablokowanie dostępu do aplikacji.

  • Częste wywoływanie interfejsu Voided Purchases API: gdy wykryjesz co najmniej 1 anulowany zakup, rozważ częstsze wywoływanie interfejsu Voided Purchases API, aby odzyskać zakupy, zanim użytkownik będzie mógł z nich skorzystać. Więcej informacji o limitach interfejsu Voided Purchases API znajdziesz w dokumentacji tego interfejsu.

Pomóż Google wykrywać oszustwa, zanim do nich dojdzie

Niektóre rodzaje oszustw są związane ze złośliwymi użytkownikami, którzy tworzą wiele kont Google i kont w aplikacjach, aby ukryć swoją aktywność.

Użyj metod setObfuscatedAccountIdsetObfuscatedProfileId w narzędziu do tworzenia BillingFlowParams, aby pomóc Google w mapowaniu kont Google na konta w aplikacji.

Google używa tych danych do wykrywania podejrzanych zachowań i blokowania niektórych rodzajów oszukańczych transakcji, zanim zostaną one sfinalizowane.

Podejmowanie działań przeciwko naruszeniom znaków towarowych i praw autorskich

Jeśli do dostarczania treści lub zarządzania nimi używasz serwera zdalnego, aplikacja powinna weryfikować stan zakupu odblokowanych treści za każdym razem, gdy użytkownik uzyskuje do nich dostęp. Umożliwia to w razie potrzeby cofnięcie uprawnień do korzystania z produktu i zminimalizowanie piractwa. Jeśli zauważysz, że Twoje treści są rozpowszechniane w Google Play, podejmij szybkie i zdecydowane działania. Więcej informacji znajdziesz na stronie Najczęstsze pytania dotyczące praw autorskich w Centrum pomocy z zakresu praw autorskich.