Zum Inhalt

Flashspiel gegen Hacker sichern

Seit ich mit Flash arbeite (1998, seinerzeit Flash 3), beschäftigt mich die Frage, wie man es schaffen könnte, ein Flashspiel schummelsicher zu gestalten.

Oft werden mit Flash Spiele umgesetzt, bei denen es am Spielende darauf hinausläuft, den erzielten Punktestand in eine Highscoreliste einzutragen. Beim Übertragen des Punktestands (meist in Verbindung mit dem SpielerInnennamen) kommen in der Regel die aus HTML-Formularen bekannten HTTP-Request-Methoden POST oder GET zum Einsatz, um einem serverseitigen Skript die zu speichernden Daten zu übergeben.
Wenn man sich dazu vor Augen hält, dass ein Flashspiel üblicherweise clientseitig, also auf dem Rechner der/des Spielers/Spielerin liegt, dass das SWF-Format offen dokumentiert ist und dass es mehrere Programme gibt, die eine SWF-Datei dekompilieren können, kann man sich vorstellen, dass es nahezu unmöglich erscheint, Schummelsicherheit zu gewährleisten, zumal selbst die pfiffigste Verschlüsselungsmechanik quasi im Klartext für jedermann sichtbar ist, nachvollzogen und für ein gefälschtes Ergebnis eingesetzt werden kann.
Oft reicht es aus, beispielsweise mit dem Firefox-Plugin LiveHTTPHeaders die beim Speichern des Ergebnisses übertragenen Variablen und Werte zu überwachen und auszuprobieren, dem angesprochenen Auswertungsskript gefälschte Daten zu übermitteln.

Weil es so einfach ist, bei den meisten Flashspielen zu schummeln, habe ich in der Vergangenheit KundInnen immer dazu geraten, Flashspiele niemals mit hohen Gewinnen („Erster Platz gewinnt ein Auto/1000 EUR/etc.“) anzubieten. Meist lief es auf eine Verlosung relativ niedrigpreisiger Gewinne unter den Top100 aller eingetragenen SpielerInnen hinaus. Das läuft zwar dem üblichen Gedanken zuwider, dass der erste Platz den größten Gewinn einstreichen sollte, bietet aber Hackern weniger Anreiz, das Spiel manipulieren zu wollen (natürlich kann ein böswilliger Hacker bei diesem Szenario auch einfach 100 gefälschte Ergebnisse senden, um seine Gewinnaussichten zu maximieren).

Ein paar Ideen zur Erhöhung der Sicherheit in Flashspielen finden sich in den Kommentaren zu diesem Artikel im „PHP Security Blog“. Diese Ideen — beispielsweise die Protokollierung jeder Mausbewegung und jedes Mausklicks während eines Spiels und deren Auswertung zur Verifizierung eines validen Ergebnisses — erfordern jedoch zumeist einen sehr hohen Entwicklungsaufwand, der zumindest meiner Erfahrung nach von KundInnen nicht bezahlt wird.

Weitere Links
Generate a keypair using OpenSSL
RSA Algorithm
Writing Encryption function in flash?
Creating more secure SWF web applications
RSA

Veröffentlicht inAllgemein
Loading Facebook Comments ...

Schreibe den ersten Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert