Ajax Рекорды безопасности - PullRequest
3 голосов
/ 12 июня 2009

Я создаю игру Tower Defense в javascript и хочу иметь высокий балл и другие многопользовательские взаимодействия. Возможно, пара игроков одновременно запустит игру и расскажет им, как быстро идут другие парни и все такое.

Я не знаю, как флеш-игры отправляют свои результаты или события, чтобы убедиться, что информация, которую отправляет каждый клиент, действительно верна, а не просто кто-то отправляет невероятные результаты. Я помню пару лет назад, когда во флеш-играх начался высокий балл, очень часто можно было увидеть нереальные (взломанные) баллы и что ж ... это довольно странно; так в чем здесь секрет?

Ответы [ 4 ]

2 голосов
/ 12 июня 2009

Лучшая практика, которую я видел для этого, - это проверять работоспособность.

Запишите истекшее время, убитых врагов и т.д.

2 голосов
/ 12 июня 2009

Люди всегда будут способны обманывать в играх ... лучшее, что вы можете сделать, это затруднить обман. Баллы за старые флеш-игры было очень легко сфальсифицировать, потому что оценка была отправлена ​​через HTTP-запрос. Обнаружение трафика выявит URL-адрес отправки и то, какие переменные необходимо передать, чтобы обновить счет. Я надеюсь, что с тех пор это изменилось.

На вашем месте я бы использовал некоторый код проверки ошибок, который будет передан вместе с итоговой оценкой, чтобы убедиться в ее достоверности Алгоритм кода проверки ошибок должно быть трудно определить из оценки (если человек ее нюхает). Javascript также должен быть произвольно запутан. Это далеко не идеально, но это должно сдерживать большую часть читеров.

0 голосов
/ 12 июня 2009

Используйте комбинацию следующих инструментов, которые обычно используются для предотвращения ложных результатов и отчетов о ходе работы.

  1. Obscurity - сжимать и запутывать логику, которая вычисляет строку оценки. Распространите его и затрудните обратный инжиниринг.
  2. Случайно меняющиеся ключи - Когда ваша игра начинается, пусть javascript запрашивает ключ, который можно использовать для шифрования строки, содержащей высокие баллы, и т. Д. Сервер также должен иметь закрытый ключ, который позволит вам расшифровать сообщение.
  3. Проверки работоспособности - хотя пользователь может изменить счет, в ваших запросах также должно быть указано количество убийств и т. Д., Которые являются известными пределами. Сервер проверит хэши и убедится, что данные верны.
  4. Рассмотрите возможность использования сервера комет. Поскольку вы будете передавать данные в реальном времени обоим клиентам, вам будет лучше использовать сервер комет, такой как Orbited или Jetty. Это позволит потоковую передачу без сбоя вашего сервера.
  5. Сделать это расстраивает. 'ничего не сказал.
0 голосов
/ 12 июня 2009

В наши дни это прежде всего мрак. Как правило, вы назначаете уникальный токен для каждой игры, формируете некоторый хэш счета и токена и проверяете его при отправке (или при постоянной подаче, проверке и переключении токенов на протяжении всего игрового процесса).

С помощью javascript вам будет намного сложнее.

...