So überprüfen Sie die Authentizität einer AJAX-Anforderung

Ich entwerfe eine Website, auf der Benutzer Rätsel so schnell wie möglich lösen. JavaScript wird verwendet, um jedes Rätsel zeitlich abzustimmen, und die Anzahl der Millisekunden wird über AJAX an den Server gesendet, wenn das Rätsel abgeschlossen ist. Wie kann ich sicherstellen, dass die vom Server empfangene Zeit nicht vom Benutzer gefälscht wurde?

Ich denke nicht, dass ein sitzungsbasiertes Authentizitätstoken (das für Formulare in Rails verwendete) ausreicht, da ich das authentifizieren mussQuelle eines Wertes, nicht nur die Legitimität der Anfrage.

Gibt es eine Möglichkeit, die Anforderung kryptografisch zu signieren? Mir fällt nichts ein, was ein Hacker nicht kopieren könnte. Ist JavaScript aufgrund seiner exponierten clientseitigen Natur Manipulationen ausgesetzt? Muss ich etwas verwenden, das kompiliert wird, wie Flash? (Huch.) Oder gibt es eine Möglichkeit, einen geheimen Schlüssel zu verstecken? Oder noch etwas, woran ich nicht gedacht habe?

Update: Um dies zu verdeutlichen, möchte ich Personen mit langsamen Netzwerkverbindungen nicht benachteiligen (und die Netzwerkgeschwindigkeit sollte als inkonsistent angesehen werden). Daher muss das Timing zu 100% clientseitig sein (der Timer startet nur, wenn bekannt ist, dass der Benutzer dies sieht) das Puzzle). Da es sich auch um Geld handelt, ist es nicht akzeptabel, dem Benutzer zu vertrauen.

Antworten auf die Frage(15)

Ihre Antwort auf die Frage