Не просто отправьте целое число на сервер. Отправить коллекцию игровой статистики, которая может быть использована для проверки реалистичности результатов. Или вы можете реализовать какой - то предварительно общий ключ для подсчета очков. Вы можете отправлять дополнительные оценки и статистику на протяжении всей игры и гарантировать, что увеличение будет разумным.
Тем не менее, я бы не слишком беспокоился об этом. Приведенные выше предложения усложнят, но не исключат возможность отправки поддельной оценки. Однако, если вы просто усложните задачу, подавляющее большинство людей, которые играют в вашу игру, не будут заинтересованы в том, чтобы ее обмануть.
Будьте осторожны с тем, как ваша игра взаимодействует с вашим сервером. Вы не хотите, чтобы ваша игра была точкой входа на ваш сервер для взлома. Убедитесь, что вы всегда проверяете свои данные и никогда не доверяете клиенту.
Как сказал Байт56: «никогда не доверяй клиенту», но:
Никогда не доверять клиенту приходит по цене:
дорого: наличие всех игр, играемых на сервере, значительно увеличит стоимость вашей инфраструктуры.
Предполагая, что большинство игроков не будут обманывать,
а верхний рекорд пройдет через некоторое время и перестанет сильно меняться
есть средний путь.
Запись игр (на клиенте).
(В зависимости от типа игры это может быть очень просто (например, шахматы) или немного сложнее (например, многопользовательский FPS),
но это всегда выполнимо.)
Когда игрок заканчивает игру, просто отправьте счет.
Если счет находится в определенном диапазоне сверху (например, верхний 1% или верхний 5),
запросите записанные данные у игрока
и воспроизведите эту игру на сервере.
Если результаты совпадают, примите их.
Таким образом, вам не нужно никаких дополнительных ресурсов на стороне сервера для большинства игр,
но вы можете убедиться, что лучшие результаты действительны.
источник
Не беспокойтесь об этом; Защита от всех атак практически невозможна, если вы доверяете клиенту. Если никто не использует Fiddler и т. Д., Чтобы изменить запрос AJAX, они могут просто запустить JS-отладчик и изменить данные игры, чтобы получить 1000 жизней и т. Д., Или изменить ваш код, или сделать 100 других вещей, о которых вы даже не думали.
Я написал такую игру несколько лет назад, и, насколько мне известно, никто не обманывал таким образом. Приза не было, кроме того, что вы указали свое имя в таблице результатов.
источник
Уменьшите социальную мотивацию, чтобы обманывать, например, используя социальные таблицы лидеров (обман только делает вас хорошо выглядящим для нескольких друзей, это не портит его всем).
Проверьте на сервере. Джоэл Полони хорошо описал приемы в Game Developer 2012, сентябрь "Scale Your Online Game"
источник
Если вы хотите создать защищенную от мошенничества онлайн-игру, вам нужно обрабатывать всю игровую логику на сервере. Все, что происходит на стороне клиента, может контролироваться и управляться пользователем. Есть такие методы, как шифрование или запутывание, которые вы можете попробовать, но, в конце концов, это всего лишь безопасность через неясность, которую может обойти тот, кто достаточно определен.
Конечно, игра, которая работает на сервере, намного сложнее в разработке, требует гораздо больше ресурсов на стороне сервера, а сетевая задержка наносит ущерб игровому опыту (особенно для быстро меняющихся игр), но это единственный способ эффективно предотвратить игроков от обмана.
источник