Wenn Ihre Anwendung immer beliebter wird, kann sie auch die unerwünschte Aufmerksamkeit böswilliger Nutzer auf sich ziehen, die Ihre Anwendung möglicherweise missbrauchen möchten. In diesem Thema werden Empfehlungen beschrieben, wie Sie diese Angriffe auf Ihre Abrechnungseinbindung verhindern und die Auswirkungen von Missbrauch in Ihrer Anwendung reduzieren können.
Sensible Logik in das Backend verschieben
Soweit Ihr Anwendungsdesign dies zulässt, verschieben Sie sensible Daten und Logik auf einen von Ihnen kontrollierten Back-End-Server. Je mehr Daten und Logik Sie in einem Frontend-Gerät haben, desto anfälliger ist es, dass es modifiziert oder manipuliert wird.
Zum Beispiel sollte ein Online-Schachspiel alle Spielzüge im Backend validieren, anstatt darauf zu vertrauen, dass das Frontend immer legale Spielzüge sendet.
Wenn Sie Sicherheitslücken oder Sicherheitsprobleme feststellen, ist es je nach Systemdesign möglicherweise einfacher, Fehler im Backend statt im Frontend zu beheben, Updates durchzuführen und Updates durchzuführen.
Käufe vor Gewährung von Berechtigungen prüfen
Ein Sonderfall von sensiblen Daten und sensibler Logik, die im Back-End verarbeitet werden sollte, sind Kaufbestätigung und -bestätigung. Nach dem Kauf eines Nutzers solltest du Folgendes tun:
- Senden Sie die entsprechende
purchaseToken
an Ihr Backend. Das bedeutet, dass du einen Datensatz allerpurchaseToken
-Werte für alle Käufe pflegen solltest. - Der
purchaseToken
-Wert für den aktuellen Kauf darf nicht mit vorherigenpurchaseToken
-Werten übereinstimmen.purchaseToken
ist global eindeutig, sodass Sie diesen Wert bedenkenlos als Primärschlüssel in Ihrer Datenbank verwenden können. - Verwende die Endpunkte
Purchases.products:get
oderPurchases.subscriptionsv2:get
in der Google Play Developer API, um gegenüber Google zu bestätigen, dass der Kauf rechtmäßig ist. - Wenn der Kauf rechtmäßig ist und in der Vergangenheit nicht verwendet wurde, kannst du unbesorgt die Berechtigung für den In-App-Artikel oder das Abo gewähren.
- Wenn bei Abos
linkedPurchaseToken
inPurchases.subscriptionsv2:get
festgelegt ist, solltest du auch daslinkedPurchaseToken
aus der Datenbank entfernen und die Berechtigung widerrufen, die demlinkedPurchaseToken
gewährt wird. So wird sichergestellt, dass nicht mehrere Nutzer zum selben Kauf berechtigt sind. - Du solltest die Berechtigung nur gewähren, wenn der Kaufstatus
PURCHASED
ist. Achte außerdem darauf, dass diePENDING
-Käufe korrekt verarbeitet werden. Bei starker Anzahl vonCANCELED
-Käufen werden möglicherweise Berechtigungen gewährt, solange der Kauf noch den StatusPENDING
hat. Weitere Informationen finden Sie unter Ausstehende Transaktionen verarbeiten. Wenn du nach dem Gewähren der Berechtigung ein Verbrauchsprodukt nutzen und bestätigen möchtest, verwende die
Purchases.products:consume
Play Developer API auf deinem sicheren Backend-Server. Wenn du ein nicht konsumierbares Produkt oder ein Abo bestätigen möchtest, ruf den entsprechenden Play Developer API-Endpunkt auf deinem sicheren Backend-Server auf, entwederPurchases.products:acknowledge
oderPurchases.subscriptions:acknowledge
. Eine Bestätigung ist erforderlich, da Google Play dadurch benachrichtigt wird, dass dem Nutzer die Berechtigung zum Kauf gewährt wurde. Du solltest den Kauf sofort nach der Erteilung der Berechtigung bestätigen.Obwohl du den Kauf clientseitig über deine Anwendung bestätigen oder nutzen kannst, bieten serverseitige APIs zusätzlichen Schutz vor Problemen wie schlechter Netzwerkverbindung und schädlichen Aktivitäten. Beispiel: Ein Nutzer hat einen Artikel in Ihrer App gekauft, aber die Netzwerkverbindung unterbrochen, während der Kauf validiert wurde. Ohne Serverbestätigung müssen sie sich möglicherweise noch einmal über die Anwendung anmelden, um den Bestätigungsprozess abzuschließen. Wenn sich der Nutzer nicht innerhalb von drei Tagen wieder anmeldet, wird der Kauf aufgrund fehlender Kaufbestätigung automatisch erstattet. Die Serverbestätigung verhindert dieses Szenario, indem sie gesendet wird, sobald Google Play den Server über die Gültigkeit des Kaufs informiert.
Weitere Informationen zur Kaufbestätigung und zum Verbrauch findest du unter Käufe verarbeiten.
Entsperrte Inhalte schützen
Um zu verhindern, dass böswillige Nutzer deine entsperrten Inhalte weitergeben, bündeln Sie sie nicht in Ihrer APK-Datei. Führen Sie stattdessen einen der folgenden Schritte aus:
- Verwenden Sie einen Echtzeitdienst, um Ihre Inhalte bereitzustellen, z. B. einen Content-Feed. Wenn Sie Inhalte über einen Echtzeitdienst bereitstellen, können Sie auch dafür sorgen, dass Ihre Inhalte immer auf dem neuesten Stand sind.
- Stellen Sie Ihre Inhalte über einen Remoteserver bereit.
Wenn Sie Inhalte von einem Remote-Server oder einem Echtzeitdienst übermitteln, können Sie die entsperrten Inhalte im Gerätespeicher oder auf der SD-Karte des Geräts speichern. Wenn du Inhalte auf einer SD-Karte speicherst, musst du sie verschlüsseln und einen gerätespezifischen Verschlüsselungsschlüssel verwenden.
Ungültige Käufe erkennen und verarbeiten
Annullierte Käufe sind Käufe, die storniert, widerrufen oder zurückgebucht wurden. Wenn einem Nutzer bei einem stornierten Kauf bereits In-App-Artikel oder andere Inhalte gewährt wurden, kannst du die Annullierung für Käufe verwenden, um den Grund für die Stornierung sowie alle zugehörigen Inhalte abzurufen, auf die du Anspruch erheben kannst.
Käufe von In-App-Artikeln und Abos können unter anderem aus folgenden Gründen für ungültig erklärt werden:
- Ein Kauf wird entweder vom Nutzer, vom Entwickler oder von Google storniert. Bei Abos bezieht sich dies auf die Kündigung des Kaufs eines Abos und nicht auf die Stornierung des Abos selbst.
- Ein Kauf wird zurückgebucht.
- Der App-Entwickler storniert oder erstattet eine Nutzerbestellung und prüft die Option „Widerrufen“ in der Konsole.
Je nachdem, warum der Kauf ungültig geworden ist, und Daten zum bisherigen Nutzerverhalten können Sie eine weitere Vorgehensweise festlegen. Wir empfehlen, eine oder mehrere der folgenden Elemente zu implementieren:
- Rückforderungen ausführen:Wenn ein Kauf annulliert wird, kannst du nicht verwendete Artikel zurückfordern, als ob sie nie gekauft worden wären. Wenn beispielsweise der Kauf einer In-Game-Währung storniert wurde, kannst du die Währung zurückfordern, die dem Nutzer bereits gewährt wurde. Wenn der Nutzer die Währung bereits ausgegeben hat, sollten Sie das Währungsguthaben auf einen negativen Wert setzen und die App-Aktivitäten und zukünftigen Käufe einschränken, bis der Währungssaldo positiv ist.
- Mehrere Verwarnungen:Erwägen Sie, im Falle von Erstverstößen weniger drastische Maßnahmen zu ergreifen, z. B. In-App-Warnungen anzuzeigen. Bei wiederholten Verstößen sollten Sie härtere Maßnahmen in Betracht ziehen.
- Käufe vorübergehend deaktivieren:Ähnlich wie bei der Implementierung mehrerer Verwarnungen kannst du Käufe für Nutzer mit ungültigen Käufen deaktivieren, bis du genauer herausfinden kannst, warum die Käufe für ungültig erklärt wurden.
- Zugriff auf Ihre Anwendung vorübergehend oder dauerhaft verbieten:In extremen Fällen mit wiederholten schädlichen Aktivitäten können Sie den Zugriff auf die Anwendung vorübergehend oder dauerhaft unterbinden.
- Rufe häufig die Voided Purchases API auf:Wenn du einen oder mehrere ungültige Käufe erkennst, solltest du die Voided Purchases API häufiger aufrufen, um Käufe zurückzufordern, bevor der Nutzer sie verarbeiten kann. Weitere Informationen zu den Voided Purchases API-Kontingenten finden Sie in der Dokumentation zur Voided Purchases API.
Google dabei unterstützen, Betrug zu erkennen, bevor er geschieht
Einige Betrugsarten beziehen sich auf böswillige Nutzer, die mehrere Google- und In-App-Konten erstellen, um ihre Aktivitäten zu verbergen.
Verwenden Sie die Methoden setObfuscatedAccountId
und setObfuscatedProfileId
im Builder für BillingFlowParams
, um Google bei der Zuordnung von Google-Konten zu In-App-Konten zu unterstützen.
Google verwendet diese Daten, um verdächtiges Verhalten zu erkennen und einige Arten betrügerischer Transaktionen zu blockieren, bevor sie abgeschlossen werden.
Maßnahmen bei Markenrechts- und Urheberrechtsverletzungen
Wenn Sie einen Remoteserver zum Bereitstellen oder Verwalten von Inhalten verwenden, sollte Ihre Anwendung den Kaufstatus des entsperrten Inhalts prüfen, sobald ein Nutzer auf den Inhalt zugreift. So können Sie die Verwendung bei Bedarf widerrufen und Piraterie minimieren. Wenn Sie feststellen, dass Ihre Inhalte bei Google Play neu angeboten werden, sollten Sie schnell und entschlossen handeln. Weitere Informationen findest du auf der Seite Häufig gestellte Fragen zum Urheberrecht in der Hilfe zum Urheberrecht.