Sicherheite bei Spielen / Userzeitleistensteuerung

Veränderung

Erfahrenes Mitglied
Ich habe ein Spiel und möchte nicht, dass der User das Spiel, meist durch Rechtsklick, von Beginn an spielen kann und dadurch eine Wiederholungsmöglichkeit hat.
Nun kann ich natürlich großartig mit http-requests und einer eigenen API das verhindern, aber geht es auch einfacher? Wie kann man den Rechtsklick in Flash blockieren und bringt das etwas gegen Manipulation von Laien?
 
Das RechtsklickMenü kann man so ausstellen:

Im object-tag: <param name="menu" value="false">
Im embed-tag: menu="false"

Also z.b so:

<object width="550" height="440">
<param name=movie value="swf.swf">
<param name="menu" value="false">
<embed src="swf.swf" quality=high type="application/x-shockwave-flash" width="550" height="400" menu="false">
</embed>
</object>

Aber generell ist Sicherheit bei Flash-Spielen ein großes Thema,
vor allem wenn es etwas zu gewinnen gibt, finden sich oft Leute die mal schauen wie viele Tore offen gelassen wurden.
Sofern es wirklich sicher sein muss, sollte man eine komplexere Server- / Client-Struktur aufbauen, mit Cookies, Sessions & Tickets und dann alle Nase lang Daten hin & her schicken, generell soviel wie möglich auf dem Server ausrechnen lassen, immer prüfen ob nicht irgendein sinnvolles Maximum überschritten wurde.
Immer nur bestimmte Server zulassen, also jede SWF sollte gucken ob ihre _url auch die ist die sie sein soll. Jede Menge relative Ladeaufrufe (../ordner/datei, usw ), mit dem Ziel das es möglichst schwer ist "mal eben" die Serverstruktur zu simulieren.
Auf keinen Fall irgendwo eine Fehlermeldung ausgeben, die sind dann komfortable "Wegweiser" für "Hacker" im Sinne von: "Ach hier fehlt noch eine Variabel, was ist denn mit der hier?. Ah, Geht doch." Dann lieber immer so tun als hätte alles geklappt.
Und jegliche Kommunikation verschlüsseln, MD5 bietet sich da meistens an.
Da sollten die Schlüssel zum dekrypten möglichst gut versteckt sein.
Also lieber mc0.rahmen.container.xVal als _root.secret.
 
Interessant.
Mir fällt auf, dass bei aktuellen Flash-Spielen im Rechtsklick sowieso die Zeitänderung nicht möglich ist, es lässt sich nur noch der Zugriff auf Kamera & Co erlauben. Ich glaube dann erfordert es auch kein param mit false-menu mehr.
Ansonsten gibt es sehr viele schöne Dinge, die ich an meinen Spielen noch optimieren kann, danke.
 
Hi,

schau mal nach der Menu- btw. MenuItem-Klasse. Damit kannst Du z.B. die herkömmlichen Kontrollen unterbinden und eigene Menüpunkte hinzufügen.

Gruß
.
 
Ich habe nun ein Spiel im Moorhuhn-Stil, das einfach Hashes übergibt, die vom Server kommen. Mit einem Sniper konnte ich das Spiel selbst manipulieren. Eine Verschlüsselung des Punktestandes bringt da auch nichts, das Verschlüsselungsverfahren kann man ja auch in der swf lesen.

Nun möchte ich gerne auf die genannten Elemente zu Verbesserung der Sicherheit eingehen. Ich würde gerne seitenlange Manuals dazu lesen, finde aber leider nirgendwo keine.
Ich danke auf jeden Fall jetzt schon für die Erklärungen.

Sofern es wirklich sicher sein muss, sollte man eine komplexere Server- / Client-Struktur aufbauen, mit Cookies, Sessions & Tickets und dann alle Nase lang Daten hin & her schicken,
Bei einem Spiel in der Form von Moorhuhn kann ich fakesicher nur dafür sorgen, kein Spiel nochmal zu starten und kein Punktestand aus einer Session mehrmals zu senden. Zudem werden Hashes wie beschrieben übergeben, aber die kann man ja auslesen mit bestimmten Proggs.

generell soviel wie möglich auf dem Server ausrechnen lassen, immer prüfen ob nicht irgendein sinnvolles Maximum überschritten wurde.
Es ist wohl in meinem Fall nicht möglich, weitere Daten auszutauschen. Beim Quiz z.B. wäre die Sache klar, aber die Punktevergabe durch ein Klickspiel bestimmt immer noch der Client durch seine Mausklickerei.

Immer nur bestimmte Server zulassen, also jede SWF sollte gucken ob ihre _url auch die ist die sie sein soll.
Welche Funktion / welches Stichwort bringt mir die Informationen für ActionScript?

Jede Menge relative Ladeaufrufe (../ordner/datei, usw ), mit dem Ziel das es möglichst schwer ist "mal eben" die Serverstruktur zu simulieren.
Stimmt, das werde ich ändern.
Auf keinen Fall irgendwo eine Fehlermeldung ausgeben, die sind dann komfortable "Wegweiser" für "Hacker" im Sinne von: "Ach hier fehlt noch eine Variabel, was ist denn mit der hier?. Ah, Geht doch." Dann lieber immer so tun als hätte alles geklappt.
Und jegliche Kommunikation verschlüsseln, MD5 bietet sich da meistens an.
Da sollten die Schlüssel zum dekrypten möglichst gut versteckt sein.
Also lieber mc0.rahmen.container.xVal als _root.secret.
Ja, so habe ich es umgesetzt.

Ich weiß also gar nicht genau, wie ich weiter verfahren soll, um das Spiel auch mit großem Aufwand recht sicher zu gestalten. Ist das in diesem Fall prinzipiell möglich?


EDIT:
Doch noch etwas gefunden:
ms_hh (flashforum.de) hat gesagt.:
- Verschlüsseln der Kommunikation zum Server( z.B. "Diffi-Hellmann", "Rijndael" etc.)
- laden von SWFs zu laufzeit, welche "server-tickets" enthalten. Diese "Inhalte", schickst Du mit zum Server, der dann validieren kann ob du "echt" bist.
- Du kannst deinen Source-Code "obfuscaten" -> obfu
- viel verschleiern.
Entdeckt habe ich auch dieses System, wie schätzt ihr es ein?
 
Zuletzt bearbeitet:
Zurück