Senden von Daten einer Fake-App an Server unterbinden

  • Antworten:1
David H.
  • Forum-Beiträge: 12

08.03.2018, 14:01:30 via Website

Hallo,
ich hab mal eine Frage. Ich hab eigene Spiele die den Highscore zu den Servern schicken. Jedoch könnte rein theoretisch jemand eine Fake bzw. Cracked apk erstellen und falsche Werte zum Server schicken. Server ist eher eine Website die via Http request die Daten einfängt und die Sachen in einer MySQL Datenbank ein speichert. Wie könnte ich es jetzt so machen das ich erkenne ob die Http Anfrage von der Original Apk kommt oder von einer Fake Apk. Geht das dann auch so das ich in der App dann eine Meldung ausgeben kann wie z.B. "Du kannst nicht online spielen da du die Originale App brauchst".
Danke schon im voraus

— geändert am 08.03.2018, 15:02:01 durch Moderator

Kommentieren
Rafael K.
  • Forum-Beiträge: 2.359

08.03.2018, 14:31:22 via Website

Sowas zu sichern ist immer ein Katz-und-Maus Spiel.
Rein theoretisch kann man sowas immer irgendwie aushebeln.

Es gibt aber Möglichkeiten es sehr schwer zu machen.
Hier ein paar Ansätze:

  • Verwende POST für die Daten, nicht GET und nutze HTTPs mit Certificate Pinning, um ein Reverse-Engineering deines Protokolls/Datenformats zu verhindern (OkHttp kann Pinning sehr komfortabel)
  • Signiere die Daten mit dem Key des APK, dann kannst du zumindest sichergehen, dass es keine Dekompilierte/Gecrackte/Neu-signierte App ist (wobei man das natürlich einfach faken kann, wenn man es weiß)

Beim letzteren kannst du z.B. durch einen speziellen HTTP Code (z.B. "unauthorized") signalisieren, dass ein Problem festgestellt wurde und deine Meldung anzeigen.

Um zu verhindern, dass jemand direkt HTTP Requests absetzt (mit Postman z.B.) kannst du auch noch:

  • Setze und validiere den UserAgent
  • Verwende zusätzlich HTTP BasicAuth
  • Setze exotische Header-Felder in den Requests und verweigere den Dienst, wenn sie fehlen
  • Gebe keine Fehlermeldung aus, wenn du einen manipulierten Request feststellst, sondern lass die Connection in den Timeout laufen (so machst du Reverse-Engineering maximal ineffizient)

— geändert am 08.03.2018, 14:32:14

Hilfreich?
David H.
Kommentieren