Google Play setzt sich für die Sicherheit von Nutzern und Entwicklern ein. Wir wissen, dass der Aufbau eines erfolgreichen App-Geschäfts auf einer vertrauenswürdigen Plattform beruht, die Ihren Return on Investment schützt, indem sie proaktiv gegen böswillige Akteure vorgeht.
In diesem Dokument werden Empfehlungen beschrieben, mit denen Sie Angriffe auf die Abrechnungseinbindung verhindern und die Auswirkungen von Missbrauch in Ihrer App verringern können.
Schutz verbessern
Die folgenden APIs und Tools können Risiken in Ihrer App minimieren:
- Voided Purchases API: Zugriff auf stornierte Bestellungen widerrufen.
- Verschleierte Konto-ID: Damit lässt sich erkennen, wenn auf mehreren Geräten innerhalb kurzer Zeit Käufe ü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. Zusätzlich zur Verwendung dieser Plattform-APIs sollten Sie die folgenden Best Practices anwenden, um Ihre Integrationen 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-Angebote und ‑Anreize missbrauchen und Geschenkkartenbetrug begehen.
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.
Beispielsweise sollte ein Online-Schachspiel alle Züge im Backend validieren, 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 Bestätigung von Käufen und die 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 alle purchaseToken-Werte für alle Käufe aufzeichnen sollten.
- Prüfen Sie, ob der purchaseToken-Wert für den aktuellen Kauf mit einem vorherigen purchaseToken-Wert übereinstimmt. purchaseToken ist global eindeutig. Sie können diesen Wert also problemlos als Primärschlüssel in Ihrer Datenbank verwenden.
- Verwende die Endpunkte Purchases.products:get oder Purchases.subscriptionsv2:get in der Google Play Developer API, um bei Google zu bestätigen, dass der Kauf rechtmäßig ist.
- Wenn du der Meinung bist, dass der Kauf legitim ist, noch nicht verwendet oder verarbeitet wurde und der Nutzer alle deine Berechtigungs- und Betrugsprüfungen besteht, kannst du ihm die Berechtigung für den In-App-Artikel oder das Abo gewähren.
- Prüfung der Berechtigung und des Missbrauchs: Prüfen Sie, ob der Nutzer weiterhin berechtigt ist, das Element zu verwenden. 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, gewähren Sie keine Berechtigung. Anstatt den Kauf aufgrund fehlender Bestätigung automatisch erstatten zu lassen (was mehrdeutig ist, da dies auch auf ein Zeitlimit für die Verarbeitung zurückzuführen sein kann), sollten Sie den Kauf explizit über den Endpunkt Orders:refund (oder eine ähnliche Play Developer API) mit dem Parameter
revokeauftruefestlegen. Durch Festlegen des Parametersrevokewird der Zugriff widerrufen, sodass der Nutzer keinen Anspruch mehr auf den Kauf hat. Außerdem wird Google Play ein deutliches Signal gesendet, dass der Kauf vom Entwickler abgelehnt wurde.
- Wenn linkedPurchaseToken in Purchases.subscriptionsv2:get für Abos festgelegt ist, sollten Sie das linkedPurchaseToken auch aus Ihrer Datenbank entfernen und die Berechtigung widerrufen, die dem linkedPurchaseToken gewährt wurde. So verhindern Sie, dass mehrere Nutzer Anspruch auf denselben Kauf haben.
- Sie sollten die Berechtigung nur erteilen, wenn der Kaufstatus PURCHASED lautet, und PENDING-Käufe korrekt verarbeiten. Wenn es zu einem Anstieg der Käufe mit dem Status „ABGEBROCHEN“ kommt, gewähren Sie möglicherweise Berechtigungen, wenn sich der Kauf noch im Status „AUSSTEHEND“ befindet. Weitere Informationen finden Sie unter Ausstehende Transaktionen verarbeiten.
Wenn Sie ein verbrauchbares Produkt nach der Erteilung der Berechtigung verbrauchen und bestätigen möchten, verwenden Sie die Play Developer API-Methode Purchases.products:consume auf Ihrem sicheren Backend-Server. 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: Purchases.products:acknowledge oder Purchases.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. Du solltest 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 die Bestätigung 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 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 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 Content-Feed. 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 Nutzer durch einen stornierten Kauf zuvor In-App-Produkte oder andere Inhalte erhalten hat, 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, 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 entscheiden, welche Maßnahmen Sie ergreifen. 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äten und zukünftigen Käufe einschränken, bis das Währungsguthaben wieder positiv ist.
Umsetzung bei mehreren Verstößen:Erwägen Sie, bei Ersttätern 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 Verstöße 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 schädlichen 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 hängen mit böswilligen Nutzern zusammen, 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 jedes Mal ü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 YouTube-Hilfe zum Urheberrecht.