Guten Tag,
nehmen wir an, man schreibe eine Anwendung (z.B. ein Spiel) und speichert die Daten auf einer externen Datenbank. Nun möchte man, wenn man das Spiel verloren hat, eine Top 10 Liste ausgeben lassen, die in der Datenbank drin steht, welche mit Passwort gesichert ist. Nun meine Frage, wie setzt man das am besten und am sichersten um?
Meine Ideen:
Man sollte auf keinen Fall das Passwort in der Anwendung stehen haben. Deswegen bevorzuge ich einen Server, welcher für eine Verifikation sorgt, dass man dann die Daten bekommt. Der Server greift dann auf die Datenbank zu.
Aber.. wie führe ich die Verifikation durch?
Ich dachte anfangs, die Hash Daten der Application zu nehmen und dies als Verifikation zu benutzen, aber dann sind wir beim üblichen Java Problem:
Da man Anwendungen einfach decompilen kann, kann man dies umgehen und trotzdem die Daten bekommen.
Führt man eine Obfuscation aus, dann benutzt man Reverse Engineering und kann jederzeit trotzdem auf den Inhalt des Servers zugreifen.
Es ist halb so schlimm, wenn man die Daten, die man eh sehen soll, sieht..
Aber: Wenn man in der Anwendung z.B. Punkte sammelt, dann schickt man die Punkte (Req -> Client zu Server) an den Server, damit er dies in die Datenbank reintut.
Wie umgehe ich das? Reverse Engineering ist eine schwere Sache. Ich weiß, dass man nicht 100% sich schützen kann, aber was wäre die beste Möglichkeit dagegen vorzugehen?
Ich meine.. in Handy Spielen kann man sich das auch nicht zwingend manipulieren, welche Online gehen, egal wie oft man versucht. Sollte man wirklich auf eine gute Obfuscation, ByteCode Manipulator verlassen?
Selbst wenn man eine Mischung aus Hash, random-Text und FileSize nimmt, kann man das immer noch sehen in Java und dementsprechend manipulieren.
Was mich aber am meisten stört ist, dass man sich so oft Punkte geben kann, wie es auch nur geht. Siehe das Beispiel von oben.
Meine Frage ist nun.. wie geht ihr da voran? Natürlich erwarte ich keine 100%tige Lösung. Es ist Reverse Engineering, man kann nichts vor Reverse Engineering schützen. Aber trotzdem wäre es nicht schlecht, es sicher wie möglich zu gestalten.
Würde mich um Antworten freuen.
Vielen Dank!
MfG
nehmen wir an, man schreibe eine Anwendung (z.B. ein Spiel) und speichert die Daten auf einer externen Datenbank. Nun möchte man, wenn man das Spiel verloren hat, eine Top 10 Liste ausgeben lassen, die in der Datenbank drin steht, welche mit Passwort gesichert ist. Nun meine Frage, wie setzt man das am besten und am sichersten um?
Meine Ideen:
Man sollte auf keinen Fall das Passwort in der Anwendung stehen haben. Deswegen bevorzuge ich einen Server, welcher für eine Verifikation sorgt, dass man dann die Daten bekommt. Der Server greift dann auf die Datenbank zu.
Aber.. wie führe ich die Verifikation durch?
Ich dachte anfangs, die Hash Daten der Application zu nehmen und dies als Verifikation zu benutzen, aber dann sind wir beim üblichen Java Problem:
Da man Anwendungen einfach decompilen kann, kann man dies umgehen und trotzdem die Daten bekommen.
Führt man eine Obfuscation aus, dann benutzt man Reverse Engineering und kann jederzeit trotzdem auf den Inhalt des Servers zugreifen.
Es ist halb so schlimm, wenn man die Daten, die man eh sehen soll, sieht..
Aber: Wenn man in der Anwendung z.B. Punkte sammelt, dann schickt man die Punkte (Req -> Client zu Server) an den Server, damit er dies in die Datenbank reintut.
Wie umgehe ich das? Reverse Engineering ist eine schwere Sache. Ich weiß, dass man nicht 100% sich schützen kann, aber was wäre die beste Möglichkeit dagegen vorzugehen?
Ich meine.. in Handy Spielen kann man sich das auch nicht zwingend manipulieren, welche Online gehen, egal wie oft man versucht. Sollte man wirklich auf eine gute Obfuscation, ByteCode Manipulator verlassen?
Selbst wenn man eine Mischung aus Hash, random-Text und FileSize nimmt, kann man das immer noch sehen in Java und dementsprechend manipulieren.
Was mich aber am meisten stört ist, dass man sich so oft Punkte geben kann, wie es auch nur geht. Siehe das Beispiel von oben.
Meine Frage ist nun.. wie geht ihr da voran? Natürlich erwarte ich keine 100%tige Lösung. Es ist Reverse Engineering, man kann nichts vor Reverse Engineering schützen. Aber trotzdem wäre es nicht schlecht, es sicher wie möglich zu gestalten.
Würde mich um Antworten freuen.
Vielen Dank!
MfG