Как проверить подлинность AJAX-запроса

Я разрабатываю веб-сайт, на котором пользователи решают головоломки как можно быстрее. JavaScript используется для определения времени каждой головоломки, а количество миллисекунд отправляется на сервер через AJAX после завершения головоломки. Как я могу убедиться, что время, полученное сервером, не было подделано пользователем?

Я не думаю, что токен аутентификации на основе сеанса (тип, используемый для форм в Rails) достаточен, потому что мне нужно аутентифицироватьисточник ценности, а не только законность запроса.

Есть ли способ криптографически подписать запрос? Я не могу думать ни о чем, что не могло бы быть продублировано хакером. Любой JavaScript, в силу своего открытого, клиентского характера, подвержен фальсификации? Я собираюсь использовать что-то, что компилируется, например, Flash? (Yikes.) Или есть какой-то способ скрыть секретный ключ? Или что-то еще, о чем я не думал?

Обновление: чтобы уточнить, я не хочу наказывать людей с медленными сетевыми подключениями (и скорость сети следует считать несовместимой), поэтому время должно быть на 100% на стороне клиента (таймер запускается только тогда, когда мы знаем, что пользователь может видеть головоломка). Кроме того, здесь задействованы деньги, поэтому никакое «доверие пользователя» неприемлемо.

Ответы на вопрос(15)

Ваш ответ на вопрос