100% -ная безопасность недостижима, когда вам приходится доверять данным клиента. Тем не менее, вы можете усложнить мошенничество, запутав код js, а также данные, которые вы отправляете с клиента.
У меня есть идея, похожая на комментарий gviews.
На сервере вы должны следить за процессом игроков в игре с помощью пакетных обновлений, которые вы будете регулярно отправлять с клиента через некоторый интервал ... Игрок не распознает его в задержке, и вы получите инструмент обнаружить очевидных мошенников. Вы знаете начальную точку игры игроков, поэтому вы можете легко обнаружить мошенничество с самого начала.
Кроме того, я бы предложил использовать некоторые контрольные точки, где вы будете проверять реальное состояние игры на клиенте и состояние на сервере. (состояние клиента не изменится, если мошенник изменит только обновления сервера на xhr).
Существует множество способов усложнить мошенничество, и это довольно индивидуально для каждой игры ... не существует стандарта, который бы решал все это.