безопасность ajax в играх javascript - PullRequest
5 голосов
/ 15 февраля 2010

В моей игре JavaScript (сделанной с помощью jQuery) у меня есть позиция игрока, сохраненная в базе данных. Когда персонаж движется, я просто отправляю запрос на конкретный URL, т.е. mysite.com/map/x1/y3 (где позиция персонажа x = 1, y = 3).

Этот URL отправляет координаты в базу данных и проверяет, есть ли рядом с нами другие игроки. Если да, он также отправляет объект JSON с именем и координатами этих игроков.

А вот и мой вопрос - как его обезопасить? Кто-то может заглянуть в мой код JavaScript и подготовить URL, похожий на mysite.com/map/x100/y234, и он «телепортирует» его в другую сторону карты.

Ответы [ 2 ]

8 голосов
/ 15 февраля 2010

Любые данные / вычисления, обработанные в JavaScript в браузере, будут небезопасными, так как весь код выполняется на локальной машине. Я бы порекомендовал перечислить все параметры, важные для честного игрового опыта, такие как позиция игрока, счет, ресурсы ... и вычислить управление этими параметрами на стороне сервера. Вы должны только собирать пользовательские данные из браузера и отправлять обновленное состояние в браузер для отображения.

Даже если вы решите вычислить некоторые значения на стороне браузера, чтобы избежать задержки, вы не должны принимать их во внимание для общего состояния, разделяемого игроками, и вы должны ресинхронизировать локальное состояние с глобальным состоянием - всегда в направлении время от времени - от глобального к локальному.

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

0 голосов
/ 15 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...