Frage

Ich arbeite auf dem back-End für ein Flash-Spiel und ich muss secure die Daten gehen in die Anzeigetafel.

Das Spiel ist zu Gast auf vielen Seiten in eine banner-Anzeige, der Benutzer wird das Spiel spielen in der Anzeige, dann klicken Sie sich durch, um die Haupt-Website zu speichern Sie Ihre Angaben.

Im moment bin ich das denken entlang der Linien von dieser

  1. Benutzer spielt das Spiel, und Klicks, um Ihre Punktzahl Einreichen
  2. Im hintergrund die banner schickt die Partitur und die ursprüngliche Domäne, um ein Skript auf der Haupt-Website.
  3. Das Skript check die domain ist eine der gültigen Domänen der Anzeige wird gehostet auf.
  4. Wenn alles richtig ist, erstellt das Skript eine hash-dieser Partitur, die Domäne und speichert Sie in der Datenbank an der Seite der Partitur.
  5. Das Skript gibt den hash zu Blinken, die Pflastersteine auf der querystring einer getURL öffnet das Haupt-Anzeiger
  6. Die Anzeigetafel-Seite prüft den referer, um sicherzustellen, dass es ist einer der gültigen Domänen.
  7. Wenn es ist es dann prüft die Datenbank für die hash, wenn es ein gültiges token
  8. der Benutzer füllt dann in Ihren details und der Datensatz wird aktualisiert, basierend auf dem hash -

Letztes mal habe ich überprüft, FLash, nicht senden referer info, die irgendwie wirft einen Schraubenschlüssel in meinen plan.Also, gibt es einen bereits etablierten Muster für diese Art von Flash - /Datenbank-Interaktion?

Welche Art von Hashing - /Checksuming sollte ich in Schritt 4?Was ist der richtige name für diese Art von operation, ist es ein hash, eine Prüfsumme oder etwas anderes?

Ich verstehe, dass eine clientseitige Technologie, Blitz wird nie wirklich sein, DASS eine sichere, aber in meinem Kopf, so etwas wie die oben genannten ist in etwa so schwierig, wie Sie sind gehen, um es zu hacken, diese Art von Anwendung.

UPDATE:Mein Hauptziel ist es, zu machen es schwieriger für die Menschen zu finden, die URL von der Skript fügt hinzu, dass die Punktzahl auf die Datenbank und einfach spam mit gefälschten erzielt.

Vielen Dank, Greg

War es hilfreich?

Lösung

Ich arbeitete zuvor in der game-Industrie, und hat etwas entlang dieser Linien.Meines Wissens nach, noch niemand die Mühe gemacht das knacken der Partitur Einreichen Teil.

Die Art, wie es getan wurde, war :

  1. Generieren Sie eine zufällige Zahl als Salz (aus dem flash)
  2. Kodieren Sie die Partitur mit Hilfe mathematischer Operationen, basierend auf den Salz - (aus dem flash)
  3. Hinzufügen einer Prüfsumme zu machen sicher, es war kein Anlassen auf die Punktzahl (aus dem flash)
  4. Senden Sie die Partitur und alle erforderlichen Daten, um die Punktzahl Einreichen Seite
  5. Auf dem server überprüfen, ob die Punktzahl wurde nicht vergütet anhand der Prüfsumme
  6. Wenn der Wert gültig ist, dann legen Sie es in die Datenbank, sonst, Sie abzulehnen
  7. Wenn Sie möchten, könnten Sie protokollieren die ip-Adressen der Einsender von Bewertungen, die gegen die Prüfsummen (vielleicht eine Politik der drei falsche Prüfsummen, du bist out) und ein Skript hinzufügen, das Verbot auf den server zugreifen, 1h, aber das wird wahrscheinlich nicht erforderlich sein, es sei denn, jemand will knacken Sie Ihren code so schlecht ist.

Hinweis :Die hashing - / checksuming wurde mit Hilfe einer benutzerdefinierten Funktion.Nicht brauchen etwas, was sehr sicher ist.Es wurde mit Hilfe einer Berechnung, die auf den Salz-und den-score.Einige einfache mathematische Operationen wie Summen, Multiplikationen und Subtraktionen.


Bearbeiten:ein einfacher Algorithmus / Mathe für die Prüfsumme

Lets sagen, dass Sie Ihre Benutzer hat einen score von 5885.
Generieren Sie eine Zufallszahl als ein Salz der 134789 (Konstante Länge, pad mit 0)

cryptedScore = Score * Salz (sollten Sie etwas ein bisschen komplizierter, hier, aber es ist nur ein Beispiel)

In unserem Beispiel, das crypted Punktzahl : 793233265

Jetzt für die Prüfsumme, können sagen, Sie möchten zu haben einen Wert 253 als Prüfsumme.
Fügen Sie alle zahlen Ihres crypted score 7+9+3+2+3+3+2+6+5 = 40

Nun, Sie berechnen den Wert Ihrer Prüfsumme für diese Partitur
253 - (Summe der crypted-score zahlen % 253)

Nun, wir haben die folgenden Nummern:
das Salz = 134789
die crypted-score = 793233265
die Prüfsumme = 40

Sie machen eine Anfrage an den server senden 134789793233265040 wie eine Partitur.

In der Partitur server, Sie können teilen 793233265 von 134789 geben 5885 und überprüfen Sie die Prüfsumme mit der gleichen Funktion wie zuvor.

Wenn die Prüfsumme fehlschlägt, dann zahlen manipuliert wurden.

könnten Sie wahrscheinlich am Ende mit etwas viel sicherer, aber es sollte den trick tun.

Andere Tipps

Im wesentlichen Sie nicht möchten, überprüfen Sie die Punktzahl kommt aus einer legit client, die Sie überprüfen möchten die Kunden tatsächlich gespielt wird das Spiel zu erreichen, die Partitur.Im Grunde das beste, was Sie hoffen können, ist, die Menschen aufgefordert werden, erstellen Sie eine KI um das Spiel zu spielen.

Hier sind ein paar Dinge, die Sie versuchen können:

  • Melden Sie die Eingänge in das Spiel ein und senden Sie diese zusammen mit der Partitur.Der server kann dann überprüfen, ob die Punktzahl entspricht einem möglichen Spiel.Sie können auch erkennen doppelte Einsendungen dieser Art und Weise.
  • Anwenden rate limiting zu stoppen, Kunden aus der Einreichung erzielt bei einem offensichtlich unmenschliche Tempo.Anwenden oberen Grenzwerte für die zulässige erzielt, basierend auf dem, was tatsächlich möglich, zu erreichen und unteren Grenzen auf Dinge wie Aktionen pro Sekunde.
  • Verwenden Sie Vorherige Eingaben teilweise seed the pseudo-random number generator (vorausgesetzt, Sie verwenden).Dies macht es weniger wahrscheinlich, dass Kunden können ändern, eine Vorlage leicht und trotzdem ein gültiges Spiel/score combo.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top