【问题标题】:HTML5 App Anti-Piracy techniques? [closed]HTML5 应用反盗版技术? [关闭]
【发布时间】:2011-08-01 16:43:28
【问题描述】:

我正在编写一个作为独立应用程序运行的基于 HTML5 的游戏。它通过网络分发,但没有其他服务器要求 - 没有数据库等 - 一切都是“应用程序内”。这是设计使然,因为额外的服务器会增加分发成本。

因此,鉴于它只是一个包含大量 JavaScript 的静态 html 文件,有什么办法可以阻止某人在他们自己的网站上托管该文件? 是否有任何技术可以帮助缓解这种情况?

我关心的不是奇怪的用户,而是其他站点的身份盗用。 非额外的服务器解决方案将是首选,但任何想法将不胜感激。

【问题讨论】:

    标签: javascript html piracy anti-piracy


    【解决方案1】:

    首先,当您分发应用程序的源代码时,任何具有一点技术知识的人都应该能够理解它的工作原理。


    但是你可以让事情变得更难——通常,使用Obfuscation (所以有意义的变量名称,如'hero_score' 被无意义的名称替换,如'a45'

    关于 Javascript 代码,请查看YUI Compressor

    【讨论】:

    • JavaScript 已经使用 Closure-Complier “编译”下来,但他们甚至不需要查看或修改 js 文件,它会在自己的服务器上原封不动地运行。
    【解决方案2】:

    我建议添加一个javascript函数来测试它在哪里播放,然后保护你的代码,在网络上你可以找到很多关于混淆/加密javascript的信息。

    编辑:在这种情况下我会做什么,并且知道窃取/重新编辑 javascript 甚至被混淆,可以做到:

    我会有一个服务器端页面来保存文件,一些核心变量将通过服务器端写入。

    困难的部分是以一种无法仅在 javascript 中完成的方式进行编程(没有服务器端)。

    那么,也许有些物品也可以通过服务器端来构建/放置,这样盗版者就很难重新制作所有东西了。

    此外,域检查的脚本可以通过服务器端完成。

    【讨论】:

    • 既然这个测试将在客户端运行,那么每次运行检查时,如何防止有人窃取代码将其更改为返回 true?或者完全删除它。
    • 这就是为什么我建议加密/混淆,以便无法更改。很遗憾有人发现我的回答是否定的。
    • 混淆只能防止随意的盗版,即使没有语义线索,确定的人也可以跟踪来源,并且发现域检查或 ajax 调用将是不费吹灰之力的删除。
    • @OriginalSyn - 测试可以在提供游戏之前在服务器端完成。并不是说这会解决 OP 的问题。
    • @OriginalSyn 是的,这就是我建议使用服务器端 + javascript 方法的原因。
    【解决方案3】:

    如果一切都在客户端运行,您将无能为力。您可以尝试混淆 JavaScript,但这不是一个非常有效的解决方案。您需要做的是以吸引人的方式将其绑定到后端,例如

    • 高分
    • 多人游戏
    • 成就
    • 与您的其他游戏集成

    通过提供卓越的体验,让他们有理由回到您身边。

    最后积极寻找并保护您的知识产权。当您发现某个网站在欺骗您时,请尽您所能将其关闭。

    【讨论】:

    • +1 是的,这是开源的,如果有人决定不付费,他们将能够付费。添加额外的好处使得盗版它没有吸引力,特别是如果这是一款便宜的游戏。即使你压缩了你的javascript,任何人即使有基本的知识也能很快破解你的软件。
    【解决方案4】:

    确保您的代码拥有明确的版权。单靠技术是无法赢得这场战斗的。

    正如 Pascal 所说,混淆和压缩代码是最好的技术解决方案。

    考虑链接到服务器以进行登录或其他内容。像 Google AppEngine 这样的东西可以让运行可扩展的服务器变得非常简单和便宜。

    【讨论】:

      【解决方案5】:

      我发现这个 Javascript Obfuscator 是你能得到的最好的保护,它使你的代码完全不可读,据说它会缩小它,而且我做了一个 JSPERF,它似乎也运行得更快。

      www.javascriptobfuscator.com

      About - Free Javascript Obfuscator 是一个专业的 javascript 混淆工具。它将 JavaScript 源代码转换为乱码且完全不可读的形式,防止其被分析和窃取。

      输出代码如下所示。

      var _0xe305=["\x48\x65\x6C\x6C\x6F\x20\x57\x6F\x72\x6C\x64\x21","\x0A","\x4F\x4B"
      ];var a=_0xe305[0];function MsgBox(_0xc87ax3){alert(_0xc87ax3+_0xe305[1]+a);}
      ;MsgBox(_0xe305[2]);
      

      请务必保留原件的副本 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        相关资源
        最近更新 更多