【问题标题】:What are the methods of protecting JavaScript web applications/games?保护 JavaScript Web 应用程序/游戏的方法有哪些?
【发布时间】:2010-07-28 19:51:53
【问题描述】:

背景故事:我打算实现一个休闲游戏以部署在 web 应用程序中,但我不想使用 Flash,而只是使用普通的 Javascript。我想要的 Flash 的一个好处是它分发二进制文件而不是源代码,因此更容易保护您的代码不被其他人重用/窃取,或者防止客户端修改代码以“作弊”游戏?

所以我的问题是:有哪些方法可以类似地保护 Javascript 应用程序?我是否仅限于使用代码混淆器的常用方法?够了吗?

【问题讨论】:

  • 投反对票:投反对票是针对不好的问题,而不是针对您不希望人们做的事情的问题。这个问题在技术上没有任何问题。
  • 我认为这不太可能。正如你所说,有混淆技术。但在某些时候,浏览器必须能够看到代码来解释它,这意味着您必须将代码提供给客户端。
  • @Roy Tang - 混淆是你所能做的。要小心,因为一些混淆器会做一些相当愚蠢的事情,并且会使你的代码运行得更慢。他们也很少真正“保护”您的代码。如果您认为您的代码或某些实现技术很有价值,请不要在网页中将其作为 Javascript 提供。
  • 抱歉,已编辑:我担心的另一个问题是防止懂 Javascript 的人“作弊”。注意:我不想知道如何混淆,我已经知道了。我想知道是否还有其他选择。
  • @Roy Tang:为了防止作弊,唯一真正的选择是让游戏引擎在服务器端运行并验证所有输入。永远不要暗中相信客户端机器告诉你的内容。

标签: javascript


【解决方案1】:

代码混淆器是您能做的一切。无论您做什么,可执行代码都将/必须在浏览器中可用。

【讨论】:

    【解决方案2】:

    使用 AJAX 让您的游戏根据您控制的服务器代码进行验证。如果游戏在某种程度上是多人游戏,这也很有用。验证可防止有人更改代码以作弊。

    Flash 也不能完全免于被其他人占用。人们可以下载二进制文件并将其发布到任何他们想要的地方。而且 Flash 反编译器确实存在并且非常有效。

    【讨论】:

    • 这个,我喜欢这个想法——你还有更多信息吗?
    • 谢谢!我已经在考虑这个了,但这意味着在每次状态更改时通过 ajax 调用将我的游戏状态同步回服务器......它可能有大量请求,所以我想知道是否有替代方案。
    • @Roy – 在这种情况下:这是什么游戏?
    • @Neurofluxation - 只是在高层次上,我不确定我还能提供什么。我认为实际的实现会根据你在做什么而改变。例如,如果您的播放器具有功率等级,则将该信息存储在服务器上并验证功率等级是否相同(或至少与玩家应具有的功率水平一致)
    • @Roy - 不一定......您真正需要验证的唯一时间是在加载游戏时(以确保它没有在未经授权的服务器上运行),然后任何时候之间存在交互两名球员。只影响玩家自己的状态变化应该不是问题。如果玩家篡改它,它可能会影响他看到的内容,但当服务器在交互中验证时一切都会正确。
    【解决方案3】:

    为什么,具体来说,您希望它在 JavaScript 中?您可以使用node.js 在服务器端运行受保护内容的 JavaScript 代码,并从客户端 JavaScript 与其交互。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2014-09-06
      相关资源
      最近更新 更多