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
Mit den folgenden APIs und Tools können Sie Risiken in Ihrer App minimieren:
- Voided Purchases API: Zugriff auf stornierte Bestellungen widerrufen
- Verschleierte Konto-ID: Erkennen, wenn Käufe auf demselben Konto innerhalb kurzer Zeit von mehreren Geräten aus getätigt werden
- Back-End-Verbrauch: Mit Tools wie Purchases.products:consume wird die Geschäftslogik an Ihre sicheren Back-Ends 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 missbrauchen und Geschenkkartenbetrug begehen.
Sensible Logik an Ihr Back-End verlagern
Lagern Sie sensible Daten und Logik so weit wie möglich an einen Back-End-Server aus, den Sie kontrollieren. Je mehr Daten und Logik sich auf einem Front-End-Gerät befinden, desto anfälliger ist es für Änderungen oder Manipulationen.
Beispielsweise sollten bei einem Online-Schachspiel alle Züge im Back-End validiert werden, anstatt darauf zu vertrauen, dass das Front-End immer zulässige Züge sendet.
Wenn Sie außerdem Sicherheitslücken oder ‑probleme finden, kann es je nach Systemdesign einfacher sein, Fehler zu beheben und Updates im Back-End bereitzustellen als im Front-End.
Käufe bestätigen, bevor Berechtigungen erteilt werden
Ein Sonderfall sensibler Daten und Logik, der im Back-End 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 Back-End. 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 sicher 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 Back-End erforderlich sind.
- Explizite Erstattungen für unrechtmäßige Käufe:Wenn der Kauf Ihre Validierungs- oder Missbrauchsprüfungen nicht besteht, erteilen Sie keine Berechtigung und bestätigen oder verarbeiten Sie den Kauf nicht. 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), widerrufen Sie den Kauf explizit und erstatten Sie ihn über den
Endpunkt
purchases.subscriptionsv2:revoke(mit"fullRefund": {}) für Abos oder den EndpunktOrders:refundmit demrevokeParameter auftruefür einmalige Produkte. Durch den Widerruf des Kaufs wird sichergestellt, dass der Nutzer keine Berechtigung mehr für den Kauf hat, und Google Play erhält 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, wenn 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 verarbeiten 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 Google 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 Clientseite über Ihre App bestätigen oder verarbeiten, aber serverseitige APIs bieten zusätzlichen Schutz vor Problemen wie einer schlechten Netzwerkverbindung und böswilligen Aktivitäten. Nehmen wir an, 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 in der App anmelden, um den Bestätigungsvorgang abzuschließen. Wenn sich der Nutzer nicht innerhalb von drei Tagen wieder anmeldet, wird der Kauf aufgrund fehlender Bestä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 Bestätigung und Verarbeitung von Käufen finden Sie unter Käufe verarbeiten.
Freigeschaltete Inhalte schützen
Damit böswillige Nutzer Ihre freigeschalteten Inhalte nicht weiterverbreiten können, 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 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 Console 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ückforderungen durchführen:Wenn ein Kauf storniert 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, können 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 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ückzufordern, bevor der Nutzer sie verwenden 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 auf 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 Urheberrechts-Hilfe.