В моей игре JavaScript (сделанный с jQuery) мне сохранили положение плеера в базе данных. Когда символ перемещается, я просто отправляю запрос к определенному URL, Т.Е. mysite.com/map/x1/y3
(где положение символа является x=1, y=3).
Тот URL отправляет координаты в базу данных и проверки, чтобы видеть, ли какие-либо другие плееры около нашего. Если да, это отправляет, также JSON возражают с именем и проводами этого плеерам.
И вот мой вопрос - как защитить его? Кто-то мог изучить мой код JavaScript и подготовить сходство с URL mysite.com/map/x100/y234
, и это 'телепортирует' его в некоторую другую сторону карты.
Вы можете запутать исходный код javascript. Это, по крайней мере, предотвратит случайные читы, однако, вероятно, нет никакого способа сделать его полностью безопасным с помощью javascript.
Любые данные/вычисления, обрабатываемые на JavaScript в браузере, будут небезопасны, поскольку весь код выполняется на локальной машине. Я бы рекомендовал перечислить все параметры, критически важные для честного опыта игры, такие как позиция игрока, счет, ресурсы... и вычислять управление этими параметрами на стороне сервера. Вы будете только собирать пользовательские данные из браузера и отправлять обновленное состояние в браузер для отображения.
Даже если вы решите вычислять некоторые значения на стороне браузера, чтобы избежать задержки, вы не должны учитывать их для глобального состояния, разделяемого игроками, и вам следует время от времени синхронизировать локальное состояние с глобальным - всегда в направлении от глобального к локальному.
Как и в обычной обработке форм, вы также должны проверить, что значения, отправленные браузером для пользовательских вводов, попадают в разумные пределы, например, относительное перемещение за одну секунду меньше определенного расстояния.