2010-12-17 8 views
1

Ich habe schon einige kleinere Online-Spiele gesehen, die in Javascript (Blackjack usw.) erstellt wurden. Während einige von ihnen ziemlich ordentlich sind, scheinen sie nicht sicher, da Javascript clientseitig gerendert wird. Wenn ich mir einige Spiele anschaue, die ich mit Pay-to-Play/User-Accounts erstellen und langfristig denken möchte, denke ich, dass ich etwas Sichereres brauche, wenn bestimmte Spiellogiken vor dem Endbenutzer verborgen sind.Sichere Websprache für ein Online-Minispiel?

Irgendwelche Empfehlungen für Websprachen/Technologien, die dies erfüllen würden? Open Source/Free ist vorzuziehen. Ist Flash hier die beste Option (nicht Open Source)? Ich habe derzeit die meisten Erfahrungen in Standard-HTML/CSS/Javascript und PHP.

Nur auf der Suche nach Ideen.

Danke!

Antwort

2

Beim Umgang mit Sicherheit müssen Sie immer definieren, was sicher ist. Wenn Sie eine Glücksspielwebsite betreiben, kann Ihre örtliche Glücksspielkommission hier ein Mitspracherecht haben. Wenn Sie nur ein Multiplayer-Spiel zum Spaß betreiben, können Sie mit Ihrer Definition lockerer sein (vorausgesetzt, gelegentliche Betrugsversuche werden den Tag nicht ruinieren).

Im Allgemeinen, wenn Sie vollständig verhindern wollen, dass der Endbenutzer mit dem Gameplay interferieren kann, muss die ganze wirkliche Arbeit auf einem Server sein, den Sie steuern. Dies bedeutet PHP, Ruby, Perl, Python, Java etc ... Mit einem Flash, Javascript oder HTML5 Frontend, das Sie annehmen müssen, können nicht vertrauenswürdige Daten erzeugt werden, selbst wenn es perfekt verarbeitet ist.

Um den Effekt zu minimieren, dass ein böswilliger Spieler speziell manipulierte gefälschte Daten an den Server sendet, sollten Sie eine serverseitige Sprache verwenden, die die Überprüfung der Puffergröße/-grenzen und die Bereinigung von Eingabeparametern übernimmt. Ich benutze PHP sehr viel, es behandelt Grenzen automatisch, wie die meisten Skriptsprachen. PHP bereinigt Daten, die auf der Client-Seite eingegeben wurden, nicht automatisch, hat aber gute Werkzeuge zur Zeichenfolgenbearbeitung, so dass ich es selbst machen kann. Achten Sie darauf, Apostrophe, HTML-Tags und JavaScript zu behandeln, die ein Benutzer eingeben kann, um Sql-Injektion (http://en.wikipedia.org/wiki/SQL_injection) und Cross Sight-Scripting-Angriffe (http://en.wikipedia.org/wiki/Cross-site_scripting) zu verhindern. Das Konvertieren von allen, <,> in Zeichencodes ist ein guter Anfang, aber Sie sollten das Thema gründlich recherchieren. Um Cross-Site-Scripting-Angriffen zu helfen, sollten Sie Anforderungen ignorieren, die von anderen Domänennamen kommen, es sei denn, Sie müssen etwas anderes tun.

Wie bei allen Programmierproblemen, denken Sie sorgfältig durch und testen Sie so viel wie möglich mit so vielen verschiedenen Daten wie möglich.

2

Die beste Option wäre, die gesicherte Verarbeitung auf der Serverseite zu sichern und alles, was vom Client kommt, zu validieren.

Ob Ihr Frontend ist Javascript, Flash, oder irgendetwas anderes - wenn es das Backend sagt „den Spieler nur über eine Karte umgedreht und bekam Black Jack“, müssen Sie auf dem Server, um bestätigen zu können, dass der Spieler kann drehe eine Karte um und hol dir jetzt Blackjack.

Soweit Technologien gehen, verwenden Sie, was Sie wissen - PHP ist in Ordnung, Sie müssen nur sicherstellen, dass Sie diese Prüfungen auf Benutzereingaben durchführen.