Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 保护HTML5游戏的源代码_Javascript_Html - Fatal编程技术网

Javascript 保护HTML5游戏的源代码

Javascript 保护HTML5游戏的源代码,javascript,html,Javascript,Html,人们对HTML5说了很多好话,但我最关心的是如何保护我游戏的源代码 基本上 如何防止其他人使用我们自己开发的游戏引擎(这是一项巨大的资产) 如何防止其他人下载游戏并在其他平台上托管 如何在源代码中隐藏服务器API调用的详细信息,例如我们自己的记分板API、虚拟货币API等 这三个问题的答案都是“你不能”。你能做的唯一一件事就是通过分发你的代码来降低对你的代码感兴趣的人的速度,但最终,如果有人想使用你的代码,你对此无能为力。最终,网络上的资产没有任何保护。如果你能在浏览器中看到它,你可以用curl

人们对HTML5说了很多好话,但我最关心的是如何保护我游戏的源代码

基本上

  • 如何防止其他人使用我们自己开发的游戏引擎(这是一项巨大的资产)
  • 如何防止其他人下载游戏并在其他平台上托管
  • 如何在源代码中隐藏服务器API调用的详细信息,例如我们自己的记分板API、虚拟货币API等

  • 这三个问题的答案都是“你不能”。你能做的唯一一件事就是通过分发你的代码来降低对你的代码感兴趣的人的速度,但最终,如果有人想使用你的代码,你对此无能为力。

    最终,网络上的资产没有任何保护。如果你能在浏览器中看到它,你可以用curl下载它。如果资产保护是您最关心的问题,我不推荐使用HTML和JavaScript


    你可以混淆你的代码以防止偶然的盗窃,也可以使用SSL来防止窥探,但是勤劳的人们仍然可以通过其他方式访问这些资产。

    缩小你的js代码将使其更难重用,但并非不可能。

    没有物理方法来复制和保护数字文件。许多行业都尝试过。很多都失败了。可悲的是,许多人将继续尝试并继续失败,但企业似乎难以从过去的错误中吸取教训


    最好不要把太多精力放在这上面。关注你的客户

    您可以在安全硬件柜(如机场)中的触摸屏pc上运行游戏,而不必通过互联网访问。也许不是你想要的理想答案。

    我个人使用Google Closure Compiler对我的代码进行高级压缩以模糊处理(下载Java文件,不要使用在线版本!)。编写代码需要一些额外的努力,但都经过了很好的说明,一旦您了解了编译器的工作原理,就很容易遵守其规则。它不仅混淆了代码,而且实际上还优化了代码的执行速度和文件大小

    说清楚-是的,其他人是对的,没有终极保护。。。等等。但是:你有没有试过让谷歌成为谷歌的头像或尾巴?我试过了,但失败了。如果在代码中使用模糊的类名和很少的字符串,则很难阅读,这意味着可能需要几个月的时间,具体取决于代码的复杂性


    对于API调用,情况就不同了。加密将无法工作,因为解密代码将在javascript中可见-即使使用模糊处理,该部分也很难隐藏,因为AJAX代码看起来总是有点像。。。另外,加密会占用CPU时间,这在其他地方可能需要。延迟是一种方法,但最终,API调用的可读性将或多或少。

    混淆javascript代码可能是一个重要的步骤。混淆会使代码变得如此复杂,以至于任何理智的人都不会试图破解它

    我一直在使用,效果很好。也就是说,模糊处理并不能解决所有问题。用户仍然可以查看浏览器和服务器之间交换的所有流量。因此,他们将了解API的工作原理和使用方法

    为了避免这种情况,可以使用javascript对消息进行加密。这可能有助于保护内容的安全。我在stackoverflow上找到了一篇讨论使用javascript加密的帖子:。可以使用一些对性能影响较小的实现


    最后但并非最不重要的一点是,应在服务器端彻底检查所有输入。所有可以在服务器端实现的逻辑都应该保留在那里

    在2019年问我自己的问题与我在巴比伦开发的问题相同……直到今天,还没有防弹的方法可以做到这一点,但你可以通过让访客注册为用户来最小化风险暴露,并在登录级别访问后保护游戏代码。

    缩小js代码将使其更难重用,但并非不可能。您可以将js美化到chrome开发工具中,因此缩小js应该只取决于性能。您得到的答案基本上都是“您无法阻止它”,但请注意,这只适用于游戏的客户端组件。服务器端组件是安全的。因此,人们可以看到您的服务器API的请求/响应,但无法看到API在服务器上的实现方式。@nnnnnnnnnn很清楚,您可以从API调用的工作方式中获得很多信息,如果您真的需要,还可以在此基础上进行构建。很多在线游戏(如魔兽世界等)都有非官方的服务器。您可以隐藏确切的实现,但不能隐藏功能。如果使用node WebKit,它会将游戏编译为windows中的exe。SSL不会阻止窥探。HTTP代理(如FIDDLR2)将允许您在中间设置一个人,以便它可以解密从计算机发送的所有通信量(通过本地代理)到主机。+ 1既在框内,又在框外。