Как сделать безопасную игру в JavaScript?

Я работаю над играми с помощью JavaScript некоторый HTML и CSS, и я задавался вопросом, был ли какой-либо способ защитить игру так, чтобы пользователь не мог просто назвать game.php? result=victory, чтобы закончить игру и заработать некоторое очко.

С прямо сейчас вот решение, которое я имею.

  • Для случайной игры уже запустите страницу с результата на месте, победы или свободный, затем просто сделайте некоторые анимации для показа его, но весь счет и победить/освободить материал является сделанной серверной стороной.

  • Для игры сражения просто получите действие от вызова JavaScript, и сделайте вычисление повреждения, реакцию противника на сервере и просто передайте данные обратно.

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

10
задан rnaud 30 March 2010 в 08:48
поделиться

4 ответа

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

По этой причине javascript не очень хороший язык для разработки онлайн-игр, поскольку каждое действие должно обрабатываться и проверяться сервером. Для других языков программирования это не такая уж большая проблема, потому что вы можете создавать свои собственные протоколы связи, используя TCP / IP для сервера и клиента. Однако для javascript такой возможности нет, потому что вы должны полагаться на протокол HTTP и обработчики XMLHTTPRequest, которые делают очень неэффективную живую связь клиент-сервер.

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

15
ответ дан 3 December 2019 в 16:29
поделиться

Вы могли бы кое-что сделать, чтобы помешать наивному пользователю, но, вероятно, нет все. Все зависит от того, насколько человек мотивирован «атаковать» вашу игру. В конце концов, пользователь может использовать отладчик javascript, чтобы точно увидеть, что делает ваш код, и воспроизвести его. Даже если вы отправите обратно каждое игровое действие, пользователь все равно сможет это воспроизвести. Если вы не будете осторожны с тем, какие действия может выполнять пользователь, они могут отправить обратно действия, которые были бы невозможны, если бы они управляли игрой со схемой управления по умолчанию.

4
ответ дан 3 December 2019 в 16:29
поделиться

Нет, никак.
Что не так с отправкой действий пользователя на сервер?

1
ответ дан 3 December 2019 в 16:29
поделиться

Для победы не должно быть URL. Во время игры клиент должен отправлять пользователю действия, и если он выиграл, сервер перенаправляет его на страницу победы.

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

3
ответ дан 3 December 2019 в 16:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: