Wraz ze wzrostem popularności aplikacji może też przyciągać niepożądaną uwagę złośliwych użytkowników, którzy mogą zechcieć ją nadużywać. W tym artykule znajdziesz zalecenia, które pomogą Ci zapobiec takim atakom na integrację płatności i zmniejszyć wpływ nadużyć w aplikacji.
Przenieś logikę wrażliwą do backendu
W zależności od projektu aplikacji możesz przenosić dane wrażliwe i mechanizmy logiczne na serwer backendu, nad którym masz kontrolę. Im więcej danych i logiki masz na urządzeniu frontendu, tym bardziej jest ono narażone na modyfikację lub modyfikację.
Na przykład gra szachowa online powinna weryfikować wszystkie ruchy w backendzie, zamiast twierdzić, że frontend zawsze wysyła ruchy prawne.
Ponadto, jeśli znajdziesz luki w zabezpieczeniach lub problemy z bezpieczeństwem, w zależności od projektu systemu możesz łatwiej debugować, naprawiać i wdrażać aktualizacje w backendie, a nie w frontendzie.
Zweryfikuj zakupy przed przyznaniem uprawnień
Szczególnym przypadkiem danych wrażliwych i logiki, które powinny być obsługiwane w backendzie, jest weryfikacja i potwierdzenie zakupu. Gdy użytkownik dokona zakupu, wykonaj te czynności:
- Wyślij odpowiedni plik
purchaseToken
do backendu. Oznacza to, że musisz prowadzić rejestr wszystkich wartościpurchaseToken
w przypadku wszystkich zakupów. - Sprawdź, czy wartość
purchaseToken
obecnego zakupu nie pasuje do żadnych poprzednich wartości parametrupurchaseToken
.purchaseToken
jest globalnie unikalny, więc możesz bezpiecznie używać tej wartości jako klucza podstawowego w bazie danych. - Użyj punktów końcowych
Purchases.products:get
lubPurchases.subscriptionsv2:get
w interfejsie Google Play Developer API, aby potwierdzić w Google, że zakup jest autentyczny. - Jeśli zakup jest prawidłowy i nie był wcześniej używany, możesz bezpiecznie przyznać uprawnienia do produktu lub subskrypcji w aplikacji.
- W przypadku subskrypcji, gdy w polu
Purchases.subscriptionsv2:get
ustawiono wartośćlinkedPurchaseToken
, musisz też usunąć z bazy danych właściwośćlinkedPurchaseToken
i unieważnić uprawnienie, które przyznajelinkedPurchaseToken
, aby upewnić się, że wielu użytkowników nie jest uprawnione do dokonania tego samego zakupu. - Upoważnienie musisz przyznać tylko wtedy, gdy stan zakupu to
PURCHASED
. Pamiętaj, by prawidłowo obsłużyć zakupy za pomocą usługiPENDING
. Jeśli nagłe zwiększenie liczby zakupów (CANCELED
) jest możliwe, możesz przyznawać uprawnienia, gdy zakup jest jeszcze w staniePENDING
. Więcej informacji znajdziesz w artykule Obsługa oczekujących transakcji. Jeśli po przyznaniu uprawnienia chcesz korzystać z produktu i potwierdzać jego użycie, użyj interfejsu
Purchases.products:consume
Play Developer API na bezpiecznym serwerze backendu. Aby potwierdzić produkt lub subskrypcję, których nie można zużywać, wywołaj odpowiedni punkt końcowy interfejsu Play Developer API (Purchases.products:acknowledge
lubPurchases.subscriptions:acknowledge
) na bezpiecznym serwerze backendu. Wymagane jest potwierdzenie, ponieważ jest to powiadomienie Google Play, że użytkownik otrzymał uprawnienia do zakupu. Zakup należy potwierdzić 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 czy szkodliwa aktywność. Rozważ na przykład, czy użytkownik kupił produkt w Twojej aplikacji, ale w trakcie sprawdzania zakupu utracił połączenie z siecią. Bez potwierdzenia serwera może być konieczne ponowne zalogowanie się w aplikacji, aby dokończyć proces potwierdzenia. Jeśli użytkownik nie zaloguje się ponownie w ciągu 3 dni, środki za zakup zostaną automatycznie zwrócone z powodu braku potwierdzenia zakupu. Potwierdzenie przez serwer zapobiega takiej sytuacji, ponieważ wysyła potwierdzenie, gdy tylko Google Play powiadomi serwer, że zakup jest prawidłowy.
Więcej informacji o potwierdzaniu i wykorzystaniu zakupów znajdziesz w artykule Przetwarzanie zakupów.
Ochrona odblokowanych treści
Aby zapobiec rozpowszechnianiu odblokowanych treści przez złośliwych użytkowników, nie umieszczaj ich w pliku APK. Zamiast tego wykonaj jedną z tych czynności:
- Do przesyłania treści używaj usługi w czasie rzeczywistym, np. źródła treści. Udostępnianie treści za pomocą usługi w czasie rzeczywistym również pozwala zadbać o jej aktualność.
- Używaj zdalnego serwera do przesyłania treści.
Gdy dostarczasz treści z serwera zdalnego lub usługi czasu rzeczywistego, możesz je zapisać w pamięci urządzenia albo na karcie SD urządzenia. Jeśli zapisujesz treści na karcie SD, pamiętaj, by je zaszyfrować i użyć klucza szyfrowania odpowiedniego dla urządzenia.
Wykrywanie unieważnionych zakupów i reagowanie na nie
Utracone zakupy to zakupy, które zostały anulowane, anulowane lub zwrócone na konto. Jeśli w przypadku unieważnionego zakupu dany użytkownik wcześniej miał dostęp do produktów w aplikacji lub innych treści, za pomocą interfejsu Voided Purchases API możesz uzyskać informacje o przyczynie anulowania zakupu wraz z powiązanymi treściami, z którymi możesz odwołać się.
Zakupy w aplikacji i subskrypcje mogą zostać unieważnione z różnych powodów, takich jak:
- Zakup został anulowany przez użytkownika, dewelopera lub Google. W przypadku subskrypcji oznacza to anulowanie zakupu, a nie anulowanie samej subskrypcji.
- Zakup podlega zwrotowi.
- Deweloper aplikacji anuluje zamówienie użytkownika lub zwraca środki za nie, a także sprawdza opcję „unieważnij” w konsoli.
Na podstawie przyczyny unieważnienia zakupu i uwzględnienia danych o zachowaniu użytkowników możesz podjąć odpowiednie działania. Zalecamy wdrożenie co najmniej 1 z tych rozwiązań:
- Odmawianie zakupu: jeśli zakup zostanie unieważniony, możesz odzyskać nieużywane produkty, jak gdyby nigdy nie zostały kupione. Jeśli na przykład unieważniono zakup waluty w grze, możesz odzyskać walutę, którą użytkownik już wcześniej otrzymał. Jeśli użytkownik wydał już pieniądze w walucie, rozważ ustawienie salda waluty na ujemne oraz ograniczenie aktywności w aplikacji i przyszłych zakupów do czasu, aż saldo będzie dodatnie.
- Wdrożenie kilku ostrzeżeń: rozważ podjęcie mniej drastycznych działań w przypadku osób, które naruszyły zasady po raz pierwszy, np. wyświetlanie ostrzeżeń w aplikacji. Wobec osób wielokrotnie naruszających zasady warto rozważyć bardziej radykalne środki.
- Tymczasowe wyłączenie zakupów: podobnie jak w przypadku stosowania wielu ostrzeżeń, rozważ wyłączenie zakupów dla użytkowników, u których zostały one unieważnione, dopóki nie uda Ci się dokładnie sprawdzić, dlaczego zakupy zostały unieważnione.
- Tymczasowo lub trwale zablokuj dostęp do aplikacji: w skrajnych przypadkach, gdy powtarzają się złośliwe działania, rozważ zablokowanie dostępu do aplikacji, tymczasowo lub na stałe.
- Częste wywołania interfejsu Voided Purchases API: jeśli wykryjesz co najmniej jeden zakup unieważniony, rozważ częstsze wywołania interfejsu Voided Purchases API, aby anulować zakupy, zanim użytkownik będzie mógł je wykorzystać. Więcej informacji o limitach interfejsu Voided Purchases API znajdziesz w dokumentacji interfejsu Voided Purchases API.
Pomóż Google wykrywać oszustwa, zanim do nich dojdzie
Niektóre rodzaje oszustw są związane ze szkodliwymi użytkownikami, którzy tworzą wiele kont Google i kont w aplikacji, aby ukryć swoją aktywność.
Użyj metod setObfuscatedAccountId
i setObfuscatedProfileId
w kreatorze dla BillingFlowParams
, aby ułatwić Google mapowanie kont Google na konta w aplikacji.
Google korzysta z tych danych, aby wykrywać podejrzane zachowania i blokować niektóre rodzaje fałszywych transakcji przed ich zakończeniem.
Podejmowanie działań przeciwko naruszaniu praw autorskich i znaków towarowych
Jeśli do dostarczania treści i zarządzania nimi używasz serwera zdalnego, Twoja aplikacja powinna za każdym razem, gdy użytkownik uzyskuje do nich dostęp, sprawdzała stan zakupu odblokowanych treści. Dzięki temu możesz w razie potrzeby cofnąć użycie i zminimalizować piractwo. Jeśli zauważysz, że Twoje treści są rozpowszechniane w Google Play, działaj szybko i zdecydowanie. Więcej informacji znajdziesz na stronie Najczęstsze pytania na temat praw autorskich w Centrum pomocy z zakresu praw autorskich.