Google Play setzt sich für die Sicherheit von Nutzern und Entwicklern ein. Wir wissen, dass ein erfolgreiches App-Geschäft auf einer vertrauenswürdigen Plattform basiert, die Ihre Investitionen schützt, indem sie proaktiv gegen böswillige Akteure vorgeht.
In diesem Dokument finden Sie Empfehlungen, wie Sie Angriffe auf Ihre Abrechnungseinbindung verhindern und die Auswirkungen von Missbrauch in Ihrer App verringern können.
Schutzmaßnahmen verbessern
Die folgenden APIs und Tools können Risiken in Ihrer App verringern:
- Voided Purchases API: Widerrufen Sie den Zugriff auf stornierte Bestellungen.
- Verschleierte Konto-ID: Hilft dabei zu erkennen, wenn Käufe auf mehreren Geräten innerhalb kurzer Zeit über dasselbe Konto getätigt werden.
- Backend-Nutzung: Mit Tools wie Purchases.products:consume wird die Geschäftslogik auf Ihre sicheren Backends verlagert, wodurch Manipulationen auf Clientseite verhindert werden. Neben der Verwendung dieser Plattform-APIs sollten Sie die folgenden Best Practices anwenden, um Ihre Einbindungen weiter vor unbefugtem Zugriff zu schützen.
Standort-Spoofing verhindern
Google Play bietet integrierte Schutzmaßnahmen, um zu verhindern, dass böswillige Akteure falsche Standorte verwenden, um regionale Währungsunterschiede auszunutzen (auch als Standort-Spoofing bezeichnet), Abo-Aktionen und ‑Anreize zu missbrauchen und Geschenkkartenbetrug zu begehen.
Sensible Logik in Ihr Backend verlagern
Lagern Sie sensible Daten und Logik so weit wie möglich auf einen Backend-Server aus, den Sie kontrollieren. Je mehr Daten und Logik sich auf einem Frontend-Gerät befinden, desto anfälliger ist es für Änderungen oder 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 ‑probleme finden, ist es je nach Systemdesign möglicherweise einfacher, Fehler zu beheben und Updates im Backend bereitzustellen als im Frontend.
Käufe bestätigen, bevor Berechtigungen erteilt werden
Ein Sonderfall sensibler Daten und Logik, der im Backend verarbeitet werden sollte, ist die Bestätigung von Käufen. Nachdem ein Nutzer einen Kauf getätigt hat, sollten Sie Folgendes tun:
- Senden Sie das entsprechende purchaseToken an Ihr Backend. Sie sollten also einen Datensatz aller purchaseToken-Werte für alle Käufe führen.
- Prüfen Sie, ob der purchaseToken-Wert für den aktuellen Kauf mit einem früheren purchaseToken-Wert übereinstimmt. purchaseToken ist global eindeutig, daher können Sie diesen Wert sicher als Primärschlüssel in Ihrer Datenbank verwenden.
- Verwenden Sie die Purchases.products:get oder Purchases.subscriptionsv2:get Endpunkte in der Google Play Developer API, um bei Google zu bestätigen, dass der Kauf legitim ist.
- Wenn Sie der Meinung sind, dass der Kauf legitim ist, in der Vergangenheit nicht verwendet oder verarbeitet wurde und der Nutzer alle Ihre Berechtigungs- und Betrugsprüfungen besteht, können Sie die Berechtigung für den In‑App-Artikel oder das Abo erteilen.
- Berechtigungs- und Missbrauchsprüfungen:Prüfen Sie, ob der Nutzer weiterhin berechtigt ist, den Artikel zu erwerben. Wenn Sie den Abrechnungsablauf mit obfuscatedAccountId oder obfuscatedProfileId konfiguriert haben, prüfen Sie, ob die Kaufzuordnung mit dem erwarteten Nutzerkonto in Ihrem System übereinstimmt. Führen Sie alle zusätzlichen Missbrauchs-, Risiko- oder Sicherheitsprüfungen durch, die von Ihrem Backend erforderlich sind.
- Explizite Erstattungen für unrechtmäßige Käufe:Wenn der Kauf Ihre Validierungs- oder Missbrauchsprüfungen nicht besteht, erteilen Sie keine Berechtigung. Anstatt
den Kauf aufgrund fehlender Bestätigung automatisch erstatten zu lassen (was
mehrdeutig ist, da es auch auf ein Zeitlimit für die Verarbeitung zurückzuführen sein kann),
erstatten Sie den Kauf explizit über den
Orders:refund Endpunkt (oder eine ähnliche Play Developer
API) mit dem
revokeParameter auftrue. Wenn Sie den Parameterrevokefestlegen, wird der Zugriff widerrufen, sodass der Nutzer keine Berechtigung mehr für den Kauf hat. Google Play erhält außerdem ein klares Signal, dass der Kauf vom Entwickler abgelehnt wurde.
- Wenn für Abos linkedPurchaseToken in Purchases.subscriptionsv2:get festgelegt ist, sollten Sie linkedPurchaseToken auch aus Ihrer Datenbank entfernen und die Berechtigung widerrufen, die für linkedPurchaseToken erteilt wurde, damit nicht mehrere Nutzer für denselben Kauf berechtigt sind.
- Sie sollten die Berechtigung nur erteilen, wenn der Kaufstatus PURCHASED ist, und darauf achten, dass Sie PENDING-Käufe korrekt verarbeiten. Wenn es einen Anstieg von CANCELED-Käufen gibt, erteilen Sie möglicherweise Berechtigungen, obwohl sich der Kauf noch im Status PENDING befindet. Weitere Informationen finden Sie unter Ausstehende Transaktionen verarbeiten.
Wenn Sie nach der Erteilung der Berechtigung ein verbrauchbares Produkt nutzen und bestätigen möchten, verwenden Sie die Play Developer API Purchases.products:consume auf Ihrem sicheren Backend-Server. Um ein nicht verbrauchbares Produkt oder ein Abo zu bestätigen, rufen Sie den entsprechenden Play Developer API-Endpunkt auf Ihrem sicheren Backend-Server auf, entweder Purchases.products:acknowledge oder Purchases.subscriptions:acknowledge. Die Bestätigung ist erforderlich, da Google Play dadurch darüber informiert wird, dass der Nutzer die Berechtigung für den Kauf erhalten hat. Sie sollten den Kauf sofort nach der Erteilung der Berechtigung bestätigen.
Sie können den Kauf zwar auf der Clientseite über Ihre App bestätigen oder nutzen, aber serverseitige APIs bieten zusätzlichen Schutz vor Problemen wie einer schlechten Netzwerkverbindung und böswilligen Aktivitäten. Angenommen, ein Nutzer hat einen Artikel in Ihrer App gekauft, aber die Netzwerkverbindung ist unterbrochen, während der Kauf bestätigt wird. Ohne serverseitige Bestätigung muss sich der Nutzer möglicherweise noch einmal über die App anmelden, um den Bestätigungsvorgang abzuschließen. Wenn sich der Nutzer nicht innerhalb von drei Tagen wieder anmeldet, wird der Kauf aufgrund fehlender Kaufbestätigung automatisch erstattet. Die serverseitige Bestätigung verhindert dieses Szenario, indem die Bestätigung gesendet wird, sobald Google Play den Server darüber informiert, 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 freigeschalteten 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 Content-Feed. Wenn Sie Inhalte über einen Echtzeitdienst bereitstellen, können Sie Ihre Inhalte auch 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 freigeschalteten Inhalte im Gerätespeicher oder auf der SD-Karte des Geräts speichern. Wenn Sie Inhalte auf einer SD-Karte speichern, verschlüsseln Sie sie und verwenden Sie einen gerätespezifischen Verschlüsselungsschlüssel.
Stornierte Käufe erkennen und verarbeiten
Stornierte Käufe sind Käufe, die storniert, widerrufen oder zurückgebucht wurden. Wenn durch einen stornierten Kauf zuvor In‑App-Artikel oder andere Inhalte für einen Nutzer freigeschaltet wurden, können Sie mit der Voided Purchases API den Grund für die Stornierung 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, z. B.:
- Ein Kauf wird storniert, entweder vom Nutzer, vom Entwickler oder von Google (einschließlich nicht bestätigter automatisch stornierter Käufe). Bei Abos bezieht sich dies auf die Stornierung 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 aktiviert in der Konsole die Option „Widerrufen“. Je nach Grund für den stornierten Kauf und unter Berücksichtigung der bisherigen Verhaltensdaten des Nutzers können Sie eine Vorgehensweise festlegen. Wir empfehlen, eine oder mehrere der folgenden Maßnahmen zu ergreifen:
Zurückbuchungen durchführen:Wenn ein Kauf storniert wird, können Sie nicht verwendete Artikel zurückbuchen, 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ückbuchen, die dem Nutzer bereits gutgeschrieben wurde. Wenn der Nutzer die Währung bereits ausgegeben hat, können Sie das Währungsguthaben auf einen negativen Wert setzen und die App-Aktivitäten und zukünftigen Käufe einschränken, bis das Währungsguthaben wieder positiv ist.
Implementierung mehrerer Verwarnungen:Ergreifen Sie bei Ersttätern weniger drastische Maßnahmen, 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 Verwarnungen können Sie Käufe für Nutzer mit stornierten Käufen deaktivieren, bis Sie genauer untersucht haben, warum die Käufe storniert wurden.
Zugriff auf Ihre App vorübergehend oder dauerhaft sperren:In extremen Fällen mit wiederholten böswilligen Aktivitäten können Sie den Zugriff auf Ihre App vorübergehend oder dauerhaft sperren.
Häufige Aufrufe der Voided Purchases API:Wenn Sie einen oder mehrere stornierte Käufe feststellen, sollten Sie die Voided Purchases API häufiger aufrufen, um Käufe zurückzubuchen, bevor der Nutzer sie nutzen kann. Weitere Informationen zu den Kontingenten der Voided Purchases API finden Sie in der Dokumentation zur Voided Purchases API.
Google helfen, Betrug zu erkennen, bevor er passiert
Einige Arten von Betrug sind mit böswilligen Nutzern verbunden, die mehrere Google- und In‑App-Konten erstellen, um ihre Aktivitäten zu verbergen.
Verwenden Sie die setObfuscatedAccountId und
setObfuscatedProfileId Methoden 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 einige Arten von betrügerischen Transaktionen zu blockieren, bevor sie abgeschlossen werden.
Maßnahmen gegen Marken- und Urheberrechtsverletzungen
Wenn Sie einen Remote-Server verwenden, um Inhalte bereitzustellen oder zu verwalten, lassen Sie Ihre App den Kaufstatus der freigeschalteten Inhalte prü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.