Alexander (HH): Highscore aus Flash fälschungssicher an PHP übergeben

Beitrag lesen

Moin Moin!

Probleme:
Wie verhindere ich, dass der Score gefälscht werden kann

Gar nicht. Ein Angreifer hat die vollständige Kontrolle über den Flash-Client und seine Umgebung, er kann sich mit Flash-Decompilern auch einen brauchbaren Quelltext verschaffen. Alle Schlüssel im Flash kann er ebenfalls extrahieren, außerdem kann er die gesamte Kommunikation mit dem Server überwachen und ggf. simulieren.

(wenn das Flash einfach ein Script aufruft und den Score per GET übergibt). Verschlüsseln ist klar - aber wie? Welchen Algorithmus kann man dafür verwenden sodass das ganze in PHP auch wieder entschlüsselt werden kann?

Jeden beliebigen. Actionscript und PHP sind turing-vollständig, damit kannst Du alle bekannten Algorithmen implementieren, wenn Du nicht auf vorhandene Implementationen zurückgreifen willst.

Taugt ein asymetrischer Algorithmus etwas - unter der Voraussetzung, dass der Schlüssel lang genug ist und geheimgehalten wird, oder kann man dann einfach das Flash dekompilieren und kommt ran?

Egal wie, der Angreifer kann den Client vollständig kontrollieren. Bei dem Szenario kannst Du nur verlieren.

Du kannst es einem Angreifer nur schwerer machen, z.B. indem Du dich gegen Replay-Attacken absicherst.

Aber mit dem Flash-Quelltext kann ein Angreifer die komplette Kommunikation, die während eines Top-Spiels ablaufen würde, vollständig simulieren, inklusive aller Verschlüsselungen, Verschleierungen, und zwischenzeitlich generierter Keys.

So lange du die Spielumgebung nicht kontrollieren kannst, kannst Du falsche Scores nicht verhindern.

Die zweite Frage - wie verhindere ich am besten, dass ein Highscore 2x beansprucht wird. d.h., wie mache ich im Flash den Score eindeutig (der Benutzername wird erst später beim Verspeichern im PHP-Script bestimmt)?

Du speicherst die Punktestände natürlich auf dem Server, und dort liegt auch die Auswertelogik.

Meine Überlegung: eine Zeit und IP-Adresse mit übergeben,

Was soll das bringen?

aber wie komme ich im Flash an die IP?

Gar nicht. Wenn, dann machst Du das auf dem Server über die Client-Adresse.

Und was passiert, wenn 2 Leute zur selben Zeit mit derselben IP einen Highscore erreichen? Ist das vernachlässigbar?

Nein. Proxies und NAT-Router kommen öfter vor, als Du denkst.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".