Jak sprawdzić autentyczność żądania AJAX

Projektuję stronę internetową, w której użytkownicy rozwiązują zagadki tak szybko, jak to możliwe. JavaScript jest używany do określania czasu każdej układanki, a liczba milisekund jest wysyłana na serwer za pośrednictwem AJAX, gdy układanka jest ukończona. Jak mogę się upewnić, że czas otrzymany przez serwer nie został sfałszowany przez użytkownika?

Nie sądzę, aby token autentyczności oparty na sesji (rodzaj używany w formularzach w Railsach) był wystarczający, ponieważ muszę uwierzytelnićźródło wartości, a nie tylko zasadności wniosku.

Czy istnieje sposób na kryptograficzne podpisanie żądania? Nie potrafię wymyślić niczego, czego nie mógłby powielić haker. Czy istnieje jakikolwiek JavaScript, ze względu na jego odsłoniętą naturę po stronie klienta, podlegającą manipulacji? Czy będę musiał użyć czegoś, co zostanie skompilowane, np. Flash? (Yikes.) Czy może jest jakiś sposób na ukrycie tajnego klucza? Albo coś innego, o czym nie pomyślałem?

Aktualizacja: Aby wyjaśnić, nie chcę karać osób z powolnymi połączeniami sieciowymi (a szybkość sieci powinna być uważana za niespójną), więc czas musi być w 100% po stronie klienta (zegar uruchamia się tylko wtedy, gdy wiemy, że użytkownik może zobaczyć zagadka). W grę wchodzą również pieniądze, więc nie można zaakceptować żadnej ilości „ufania użytkownikowi”.

questionAnswers(15)

yourAnswerToTheQuestion