Это сложно, и, к сожалению, нет простого решения. Я могу дать вам несколько советов, которые помогли мне, когда я создавал флеш-игру с денежным призом. Это сработало довольно хорошо для меня, но опять же - это ни в коем случае не было полным доказательством.
Прежде всего подумайте о том, какой наивысший балл можно получить за определенный период времени. Например, вы можете сказать, что наибольшее количество очков, которое вы могли разумно получить после игры в течение 1 минуты, составляет 200 баллов.
Каждый раз, когда кто-то начинает играть в игру, вы делаете AJAX-вызов на свой сервер, чтобы получить идентификатор игры. Через определенные промежутки времени (скажем, 10 секунд) ваш игровой телефон возвращается домой с идентификатором игры и последним счетом. Таким образом, единственный способ обмануть это создать скрипт, который периодически связывается с сервером с медленно увеличивающимся счетом, который падает ниже вашего максимума. Это не сложно, но, по крайней мере, теперь мы входим на территорию, где мы устранили случайных хамов с помощью TamperData и несколько минут, чтобы убить скуку.
Еще одна вещь, которую вы можете сделать, когда отправляете текущий счет, это текущий статус игрового поля. Это не очень полезно для ловли читов вживую, но это очень хороший инструмент, который вы можете использовать при присуждении приза, чтобы убедиться, что рекорд является подлинным. Это добавляет еще один уровень сложности вашей системе и, надеюсь, заставит некоторых из более хардкорных хамов наскучить и найти что-то еще.
Мое последнее предложение таково: вы никоим образом не заставляете своих пользователей сразу же осознавать, что вы делаете. То есть, если чей-то рейтинг падает выше вашего порога рекордов / времени, вы ничего не делаете, чтобы сообщить им, что они сработали на вашем чит-детекторе. В созданной мной игре я даже записал их рекорд вместе с их cookie. При получении рекордов из вашей базы данных вы выбираете * ОТ баллов ГДЕ обманывают = ЛОЖЬ ИЛИ cookie = userscookie. Таким образом, до тех пор, пока они не очистят свои cookie и не проверит еще раз, (только для них) окажется, что их попытка взлома была успешной.
Ох, и еще одна вещь; минимизировать свой JavaScript. Это запутает код и сделает его очень трудным для чтения. Опять же, кто-то достаточно решительный может легко обойти это и взглянуть на ваш код, но все дело в том, чтобы сделать вашу систему достаточно сложной, чтобы люди не беспокоились.
К сожалению, самая сильная сторона сети иногда может быть и самой слабой. Природа WWW заключается в том, что исходный код открыт и доступен для чтения всем, что означает, что хранить секреты от ваших пользователей очень сложно, если не невозможно.