Wenn Ihre App an Popularität gewinnt, kann sie auch die unerwünschte Aufmerksamkeit von böswilligen Nutzern auf sich ziehen, die Ihre App missbrauchen möchten. In diesem Thema werden Empfehlungen beschrieben, die Sie verwenden sollten, um diese Angriffe auf Ihre Abrechnungsintegration zu verhindern und die Auswirkungen von Missbrauch in Ihrer App zu verringern.
Sensible Logik in das Backend verschieben
Lagern Sie sensible Daten und Logik so weit wie möglich auf einen Backend-Server aus, den Sie kontrollieren. Je mehr Daten und Logik auf einem Frontend-Gerät vorhanden sind, desto anfälliger ist es für Manipulationen.
Bei einem Online-Schachspiel sollten beispielsweise alle Züge im Backend validiert werden, anstatt darauf zu vertrauen, dass das Frontend immer zulässige Züge sendet.
Wenn Sie außerdem Sicherheitslücken oder Sicherheitsprobleme finden, ist es je nach Systemdesign möglicherweise einfacher, Updates im Backend als im Frontend zu debuggen, zu beheben und bereitzustellen.
Käufe vor dem Gewähren von Berechtigungen bestätigen
Ein Sonderfall für sensible Daten und Logik, die im Backend verarbeitet werden sollten, ist die Kaufbestätigung und -bestätigung. Nachdem ein Nutzer einen Kauf getätigt hat, sollten Sie Folgendes tun:
- Senden Sie das entsprechende
purchaseToken
an Ihr Backend. Das bedeutet, dass Sie allepurchaseToken
-Werte für alle Käufe aufzeichnen sollten. - Prüfen Sie, ob der
purchaseToken
-Wert für den aktuellen Kauf mit einem vorherigenpurchaseToken
-Wert übereinstimmt.purchaseToken
ist global eindeutig. Sie können diesen Wert also problemlos als Primärschlüssel in Ihrer Datenbank verwenden. - Verwenden Sie die Endpunkte
Purchases.products:get
oderPurchases.subscriptionsv2:get
in der Google Play Developer API, um bei Google zu bestätigen, dass der Kauf rechtmäßig ist. - Wenn der Kauf legitim ist und in der Vergangenheit noch nicht verwendet wurde, können Sie die Berechtigung für den In-App-Artikel oder das Abo gefahrlos gewähren.
- Wenn für Abos
linkedPurchaseToken
inPurchases.subscriptionsv2:get
festgelegt ist, sollten Sie auch dielinkedPurchaseToken
aus Ihrer Datenbank entfernen und die Berechtigung widerrufen, die derlinkedPurchaseToken
gewährt wird. So verhindern Sie, dass mehrere Nutzer Anspruch auf denselben Kauf haben. - Sie sollten die Berechtigung nur erteilen, wenn der Kaufstatus
PURCHASED
ist, und darauf achten, dassPENDING
-Käufe korrekt verarbeitet werden. Wenn es einen Anstieg derCANCELED
-Käufe gibt, gewähren Sie möglicherweise Berechtigungen, wenn sich der Kauf noch im StatusPENDING
befindet. Weitere Informationen finden Sie unter Ausstehende Transaktionen verarbeiten. Nachdem Sie die Berechtigung gewährt haben, können Sie ein verbrauchbares Produkt auf Ihrem sicheren Backend-Server über die Play Developer API
Purchases.products:consume
nutzen und bestätigen. Wenn Sie ein nicht verbrauchbares Produkt oder ein Abo bestätigen möchten, rufen Sie auf Ihrem sicheren Backend-Server den entsprechenden Play Developer API-Endpunkt auf, entwederPurchases.products:acknowledge
oderPurchases.subscriptions:acknowledge
. Die Bestätigung ist erforderlich, da Google Play dadurch darüber informiert wird, dass dem Nutzer die Berechtigung für den Kauf gewährt wurde. Sie sollten den Kauf sofort nach der Erteilung der Berechtigung bestätigen.Sie können den Kauf zwar clientseitig über Ihre App bestätigen oder nutzen, aber serverseitige APIs bieten zusätzlichen Schutz vor Problemen wie schlechter Netzwerkverbindung und böswilligen Aktivitäten. Stellen Sie sich beispielsweise vor, ein Nutzer hat einen Artikel in Ihrer App gekauft, aber die Netzwerkverbindung ist während der Bestätigung des Kaufs unterbrochen worden. Ohne Serverbestätigung müssen sie sich möglicherweise noch einmal über die App anmelden, um den Bestätigungsprozess abzuschließen. Andernfalls wird der Kauf automatisch erstattet, da keine Kaufbestätigung erfolgt ist. Durch die Serverbestätigung wird dieses Szenario verhindert, da die Bestätigung gesendet wird, sobald Google Play den Server benachrichtigt, dass der Kauf gültig ist.
Weitere Informationen zur Kaufbestätigung und Nutzung finden Sie unter Käufe verarbeiten.
Freigeschaltete Inhalte schützen
Damit böswillige Nutzer Ihre entsperrten Inhalte nicht weiterverbreiten können, sollten Sie sie nicht in Ihre APK-Datei einbinden. Führen Sie stattdessen einen der folgenden Schritte aus:
- Verwenden Sie einen Echtzeitdienst, um Ihre Inhalte bereitzustellen, z. B. einen Contentfeed. Wenn Sie Inhalte über einen Echtzeitdienst bereitstellen, können Sie sie auch immer auf dem neuesten Stand halten.
- Verwenden Sie einen Remote-Server, um Ihre Inhalte bereitzustellen.
Wenn Sie Inhalte von einem Remote-Server oder einem Echtzeitdienst bereitstellen, können Sie die entsperrten Inhalte im Gerätespeicher oder auf der SD-Karte des Geräts speichern. Wenn Sie Inhalte auf einer SD-Karte speichern, sollten Sie die Inhalte verschlüsseln und einen gerätespezifischen Verschlüsselungsschlüssel verwenden.
Ungültige Käufe erkennen und bearbeiten
Ungültige Käufe sind Käufe, die storniert, widerrufen oder zurückgebucht wurden. Wenn ein ungültiger Kauf zuvor In-App-Artikel oder andere Inhalte für einen Nutzer bereitgestellt hat, können Sie mit der Voided Purchases API den Grund für die Ungültigkeit des Kaufs sowie alle zugehörigen Inhalte abrufen, die Sie zurückfordern können.
Käufe von In-App-Artikeln und Abos können aus verschiedenen Gründen storniert werden, unter anderem aus den folgenden:
- Ein Kauf wird vom Nutzer, vom Entwickler oder von Google storniert (einschließlich automatisch stornierter Käufe, die nicht bestätigt wurden). Bei Abos bezieht sich dies auf die Kündigung des Kaufs eines Abos und nicht auf die Kündigung des Abos selbst.
- Ein Kauf wird zurückgebucht.
- Der App-Entwickler storniert oder erstattet eine Nutzerbestellung und aktiviert in der Konsole die Option „Widerrufen“.
Anhand des Grunds für den stornierten Kauf und unter Berücksichtigung der bisherigen Verhaltensdaten des Nutzers können Sie über das weitere Vorgehen entscheiden. Wir empfehlen, eine oder mehrere der folgenden Maßnahmen zu ergreifen:
- Rückforderungen durchführen:Wenn ein Kauf ungültig gemacht wird, können Sie nicht verwendete Artikel zurückfordern, als wären sie nie gekauft worden. Wenn beispielsweise ein Kauf von In‑Game-Währung storniert wurde, können Sie die Währung zurückfordern, die dem Nutzer bereits gutgeschrieben wurde. Wenn der Nutzer die Währung bereits ausgegeben hat, sollten Sie das Währungsguthaben auf einen negativen Wert setzen und die App-Aktivität und zukünftige Käufe einschränken, bis das Währungsguthaben wieder positiv ist.
- Implementierung mehrerer Strikes:Erwägen Sie, bei Erstverstößen weniger drastische Maßnahmen zu ergreifen, z. B. In-App-Warnungen. Bei Wiederholungstätern sollten Sie strengere Maßnahmen in Betracht ziehen.
- Käufe vorübergehend deaktivieren:Ähnlich wie bei der Implementierung mehrerer Strikes sollten Sie Käufe für Nutzer mit stornierten Käufen deaktivieren, bis Sie genauer untersuchen können, warum die Käufe storniert wurden.
- Zugriff auf Ihre App vorübergehend oder dauerhaft untersagen:In extremen Fällen mit wiederholten böswilligen Aktivitäten sollten Sie den Zugriff auf Ihre App vorübergehend oder dauerhaft untersagen.
- Häufige Aufrufe der Voided Purchases API: Wenn Sie einen oder mehrere stornierte Käufe erkennen, sollten Sie die Voided Purchases API häufiger aufrufen, um Käufe zurückzufordern, bevor der Nutzer sie nutzen kann. Weitere Informationen zu Kontingenten für die Voided Purchases API finden Sie in der Dokumentation zur Voided Purchases API.
Google helfen, Betrug zu erkennen, bevor er passiert
Einige Arten von Betrug stehen im Zusammenhang mit böswilligen Nutzern, 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
, damit Google Google-Konten In-App-Konten zuordnen kann.
Google verwendet diese Daten, um verdächtiges Verhalten zu erkennen und bestimmte Arten von betrügerischen Transaktionen zu blockieren, bevor sie abgeschlossen werden.
Maßnahmen gegen Marken- und Urheberrechtsverletzungen
Wenn Sie einen Remote-Server zum Bereitstellen oder Verwalten von Inhalten verwenden, muss Ihre App den Kaufstatus der freigeschalteten Inhalte immer dann überprüfen, wenn ein Nutzer auf die Inhalte zugreift. So können Sie die Nutzung bei Bedarf widerrufen und Piraterie minimieren. Wenn Sie feststellen, dass Ihre Inhalte bei Google Play weiterverbreitet werden, sollten Sie schnell und entschlossen handeln. Weitere Informationen finden Sie auf der Seite Häufig gestellte Fragen zum Urheberrecht in der Hilfe zum Urheberrecht.