Я нахожусь в процессе планирования игры, построенной с использованием JavaScript и HTML5.
У меня возникают проблемы с пониманием того, как вы можете помешать кому-либо просто скопировать JavaScript с веб-сервера и либо создать свою собственную игру с ним (не моя самая большая проблема), либо заменить свои собственные функции JavaScript и лишить всякую надежду надежных клиентов в дикий, если игра должна была в конечном итоге поддерживать мультиплеер.
Можно ли что-нибудь сделать, чтобы никто не читал JavaScript?
Если нет, то должна ли вся обработка игр происходить на сервере где-нибудь, и единственной обязанностью клиента является сбор информации от пользователя и рисование графики?
html5
javascript
client-server
Кристиан
источник
источник
Ответы:
Храните все свои игровые данные и логику на сервере. Часть игры, которая находится на стороне клиента, может быть скопирована с использованием соответствующих инструментов в любом случае (даже если это Flash или Java), так что просто примите это и не слишком заботьтесь об этом.
Чтобы сохранить ваш javascript менее копируемым, из-за плохой читабельности вы можете уменьшить его . В любом случае, это хорошая практика, так как игровой сайт загружается быстрее.
источник
Вот где закон помогает. На практике это не так часто случается.
В природе нет надежных клиентов именно по такой причине. Откажись от этой мечты сейчас. :)
источник
Так же, как все остальные рекомендовали; сохранить как можно больше кода на стороне сервера.
Метод, который я использовал для борьбы с копированием кода, немного странный, но до сих пор он работал хорошо.
Теперь ваш секретный код выполняется на стороне клиента и не будет отображаться в view-source или инспекторах / консолях. Есть еще способы добраться до кода, но это немного сложнее.
источник
Единственный способ быть уверенным в том, что ваш игровой код будет защищен, - это создать игру типа клиент / сервер и разместить на сервере как можно больше кода. И конечно, сделайте этот сервер безопасным!
Основная проблема заключается в том, что если код работает на моем компьютере, я могу проверить его, декомпилировать и выяснить, как он работает. Это верно для JavaScript, Flash, C ++ и всего остального. На самом деле, при разработке MMO (именно там находится мой профессиональный опыт), с самого начала предполагается, что клиент скомпрометирован: все, что вы написали для клиента, уже в руках того, кто захочет, злоумышленник или не.
Сокращение кода действительно обеспечивает небольшую защиту от людей, которые слишком ленивы, чтобы унифицировать его, используя один из множества инструментов. (Но рабочий код должен быть уменьшен, чтобы уменьшить объем данных).
Но если вы находитесь в ситуации, когда, скажем, ваш начальник хочет какой-то защиты кода, вы можете использовать Google «Javascript obfuscator» - есть много бесплатного и платного программного обеспечения, которое делает JS по крайней мере настолько непроницаемым чтобы декомпилировать как Flash.
источник
Помимо всего этого разговора о запутывании кода, обязательно поместите очень четкую декларацию об авторских правах в верхней части каждого файла и сделайте очевидным, что лицензия не допускает изменения или коммерческого использования. Это дает вам юридическую защиту, если кто-то попытается скопировать его. Если вы не желаете обращаться в суд по этому поводу, тогда весь этот вопрос носит в основном академический характер.
источник
Я думаю, что если вы сделаете свою игру многопользовательской, что влечет за собой сохранение игровой логики на сервере, вы, вероятно, сделаете ее по крайней мере менее привлекательной для кражи. Вы не можете доверять клиенту на самом деле. Как уже упоминалось, есть инструменты даже для скомпилированных языков, таких как Java и Flash, которые могут реконструировать текст кода из байтового кода.
источник
Вам нужно использовать Javascript Minifier. Есть много доступных вариантов, не стесняйтесь найти тот, который вам нравится. Чтобы спасти вас от некоторых исследований, вы можете попробовать Yahoo Minifier . Я не управлял этим сам, но я предполагаю, что это сделает то, что вам нужно. Цель состоит в том, чтобы 1) уменьшить размер файла и 2) запутать код. Это достигается путем удаления всех пробелов, комментариев и замены имен переменных на более короткие, бессмысленные.
Большинство современных веб-приложений содержат значительное количество Javascript и используют такие инструменты, чтобы попытаться защитить свой IP. Как уже говорили другие, вы всегда должны спрашивать: «Могу ли я сделать это на сервере?» для важных или деликатных операций, но я считаю, что это должно обеспечить некоторую защиту.
источник
Используйте компилятор Google closure http://code.google.com/closure/compiler/ Это не просто js minimizer;)
Каковы преимущества использования Closure Compiler?
Эффективность. Closure Compiler уменьшает размер ваших файлов JavaScript и делает их более эффективными, помогая быстрее загружать ваше приложение и уменьшая ваши потребности в пропускной способности.
Проверка кода. Компилятор Closure предоставляет предупреждения о недопустимом JavaScript и предупреждения о потенциально опасных операциях, помогая вам создавать JavaScript, который менее глючит и проще в обслуживании.
источник
Или вы можете использовать что-то вроде Game Maker HTML5 для создания своей игры, которая будет запутывать код для вас. Это означает, что это сделает код нечитаемым для людей. И это будет почти невозможно редактировать.
источник
Все проприетарное должно храниться на стороне сервера. Клиентской стороне вы предоставляете достаточно только для того, чтобы облегчить им использование игры.
источник
Размещение всего на сервере может иметь проблемы с производительностью и не использовать весь потенциал Интернета, как мы его знаем сегодня.
Вы можете написать свой код на C ++ и скомпилировать его в двоичные файлы.
Собственный клиент (NaCl).
См. Https://stackoverflow.com/questions/9018537/how-to-run-c-programs-on-the-web-inside-a-browser
источник