2012-03-20 2 views
0

Я пишу игру на javascript с холстом и easeljs, и мне интересно, есть ли способы ее защитить. Например, я использую stage.Addchild(index), чтобы добавить новый объект на сцену. Просто редактируя DOM, я могу добавить новый обработчик событий и запустить его, что-то вроде <body onclick="stage.removeChild(0)">, и это приведет к удалению всех объектов сцены по одному.Как защитить js от пользовательских событий

Я думал отфильтровать все предстоящие события и проверить, что уволило его. Но я не уверен, как это сделать, и там могут быть лучшие способы сделать это ... Пожалуйста, укажите мне в правильном направлении ...

+2

Я должен спросить - зачем беспокоиться? Это серьезный вопрос. – asawyer

+0

Я полностью потерял тебя. – gdoron

+0

У меня нет отличного ответа для ya, я могу сказать, что ваш js через что-то вроде [Google Closure] (http://closure-compiler.appspot.com/home) заставит его гораздо труднее читать и переписывать на во время выполнения. В основном хотелось указать, если вы создаете игру с javascript, вам действительно нужно проверить [gameQuery] (http://gamequeryjs.com/). Делает полную запись на основе спрайтов для браузеров ветерок и даже имеет некоторую безопасность, чтобы обеспечить или помочь уменьшить обман. – SpYk3HH

ответ

2

Лучший способ защитить ваш Javascript - положить весь ваш код инициализации в закрывает и не раскрывает ничего против глобальных переменных.

Однако это обеспечивает только некоторые гарантии от конфликтов пространства имен во время выполнения и предназначено для использования в качестве хорошей практики разработки.

Вы не можете доверять коду, выполняемому на стороне клиента; для анти-чит-поведения вам необходимо проверить входящие входы на стороне сервера. Пользователи имеют 100% контроль над тем, что работает в своих браузерах, и это включает в себя управление для изменения вашего кода по своему усмотрению.

+0

«для анти-чит-поведения вам необходимо проверить входящие входы на серверной стороне». Возможно, я ошибаюсь, но чтобы проверить их на стороне сервера, мне нужно отправить запрос на сервер с клиентской стороны, и любой запрос можно поймать и изменить в браузере. – soin08

Смежные вопросы