【问题标题】:Securing client side code保护客户端代码
【发布时间】:2011-03-30 00:49:18
【问题描述】:

我正在开发一个使用客户端代码(具体来说是 js)的应用程序,需要对其进行保护。 IE。这样用户就无法窃取代码并重用它。混淆不是一种选择,因为我需要完全保护代码(使用加密)。在广泛搜索互联网以寻找允许 js 加密的解决方案后,我得出的结论是,该专有代码只能在服务器端执行以确保其安全性。

有没有人有任何其他的想法或解决方案,可以让服务器不必处理原本可以用 js 在客户端完成的事情。在服务器上执行一些代码是一种选择,但资源是有限的。另一个问题是它需要类似于“服务器端 js”,即用户体验不会改变。

【问题讨论】:

  • 您能否给出一个需要以安全方式在“客户端”进行的数据操作用例?
  • 您不会获得“安全”的客户端代码。混淆是最接近的事情,但不是 100%。任何涉及专有业务逻辑的繁重处理都应在您的服务器上完成。
  • 如果它可以在客户端解密,用户可以用它做任何他想做的事情。这就像将加密的安全数据连同密钥一起提供给陌生人。
  • 我想我会保留专有的东西服务器端,只是混淆 js 代码......

标签: java javascript encryption encryption-asymmetric


【解决方案1】:

如果代码是客户端,他们有代码。时期。这就是互联网的运作方式。

如果您想保护它免受最终用户的影响,那么是的,您需要将其保留在服务器端。唉,这将改变用户体验。确实没有办法解决这个问题,尽管也许通过明智的 AJAX 调用,您可以找到一个快乐的媒介。

【讨论】:

    【解决方案2】:

    不,听起来您已经掌握了要点。使用服务器来处理需要安全完成的任何事情。使用javascript显示服务器发送的数据。

    我不知道您正在处理什么应用程序,但通常情况下,将重要处理任务转移到客户端的工作涉及大量数据传输,从长远来看,服务器必须做更多的工作。请问您想在客户端进行什么样的处理?

    【讨论】:

    • 基本上处理涉及如何向用户显示数据(元素的可视化和定位)。问题是所使用的算法以及可视化方法都是新颖的,因此最好将此代码保密。
    • @Caroline:不要高估代码的聪明程度。一旦有人看到你所达到的视觉效果,他们就可以编写自己的版本,而且难度远低于抄袭你缩小的 javascript。
    【解决方案3】:

    必须针对服务器端解决方案更改用户体验,这仅仅是因为您将在不同的机器上运行代码,两者之间有一个网络。延迟不同。当然,它可能已经足够好,但如果不知道它是什么类型的应用程序,就很难说。

    我能想象到的最接近的方法是在原本安全的应用程序中托管某种 JavaScript 引擎……但您可以从游戏行业的尝试状态看出,他们发现制作不可破解的客户端代码是多么容易。基本上,如果它要在本地运行,代码必须在那里执行......这意味着它可以被检查。你所能做的就是让它变得更难。

    【讨论】:

    • 我将不得不仔细研究一个带有 javascript 引擎的解决方案。看起来很明显,但只是为了不让我感到困惑......这意味着js引擎需要在本地运行对吗?
    • @Caroline:是的。您将发布一个原生应用程序 - 安全但您想要保护 that - 它将托管 JS 引擎。工作量很大...您确定这是一项基本要求吗?
    【解决方案4】:

    您可以加密您的 javascript,然后在客户端对其进行解密和评估。如果它是一个私人应用程序,您可以使用密码进行加密,因此任何没有密码的人都无法解密它。否则你应该让它变得非常复杂。

    【讨论】:

      【解决方案5】:

      除了讨论的标准 JS 混淆之外,例如在这里:https://stackoverflow.com/questions/2285593/how-to-sell-and-protect-software-that-has-easily-visible-source-like-javascript 这几乎是不可能的。

      我倾向于质疑是否真的需要首先保护客户端代码。是什么让它如此独特以至于这是必要的?无论如何,任何类型的敏感数据操作都应该在服务器端完成,因为每种混淆方法都只是不完善的保护。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-19
        • 2017-10-18
        • 1970-01-01
        • 2017-06-29
        • 2011-07-07
        • 2012-09-03
        • 1970-01-01
        • 2016-11-12
        相关资源
        最近更新 更多