我正在开发一个使用客户端代码(具体来说是 js)的应用程序,它需要得到保护。即,这样用户就不能窃取代码并重用它。混淆不是一种选择,因为我需要完全保护代码(使用加密)。在广泛搜索互联网以寻找允许 js 加密的解决方案后,我得出的结论是,该专有代码只能在服务器端执行以确保其安全性。
有没有人有任何其他想法或解决方案,这将使服务器不必处理原本可以在客户端上使用 js 完成的事情。在服务器上执行一些代码是一种选择,但资源是有限的。另一个问题是它需要类似于“服务器端 js”,即用户体验不会改变。
我正在开发一个使用客户端代码(具体来说是 js)的应用程序,它需要得到保护。即,这样用户就不能窃取代码并重用它。混淆不是一种选择,因为我需要完全保护代码(使用加密)。在广泛搜索互联网以寻找允许 js 加密的解决方案后,我得出的结论是,该专有代码只能在服务器端执行以确保其安全性。
有没有人有任何其他想法或解决方案,这将使服务器不必处理原本可以在客户端上使用 js 完成的事情。在服务器上执行一些代码是一种选择,但资源是有限的。另一个问题是它需要类似于“服务器端 js”,即用户体验不会改变。
如果代码是客户端,他们有代码。时期。这就是互联网的运作方式。
如果您想保护它免受最终用户的影响,那么是的,您需要将其保留在服务器端。唉,这将改变用户体验。确实没有办法解决这个问题,但也许通过明智的 AJAX 调用,您可以找到一个快乐的媒介。
不,听起来您已经掌握了要点。使用服务器来处理需要安全完成的任何事情。使用 javascript 显示从服务器发送的数据。
我不知道您正在处理什么应用程序,但通常将重要处理卸载到客户端的工作涉及大量数据传输,从长远来看,服务器必须做更多的工作。请问您想在客户端进行什么样的处理?
对于服务器端解决方案,用户体验必须改变,这仅仅是因为您将在不同的盒子上运行代码,两者之间有一个网络。延迟会有所不同。当然,它可能已经足够好了,但如果不知道它是什么类型的应用程序,就很难说。
我能想象到的最接近的方法是在一个原本安全的应用程序中托管某种 JavaScript 引擎……但你可以从游戏行业的尝试状态中看出,他们发现制作不可破解的客户端代码是多么容易。基本上,如果它要在本地运行,代码必须在那里执行......这意味着它可以被检查。你所能做的就是让它变得更难。
您可以加密您的 javascript,然后在客户端对其进行解密和评估。如果它是私人应用程序,您可以使用密码进行加密,因此任何没有密码的人都无法解密它。否则你应该让它变得非常复杂。
除了在这里讨论的标准 JS 混淆之外,例如:https ://stackoverflow.com/questions/2285593/how-to-sell-and-protect-software-that-has-easily-visible-source-like-javascript 这是几乎不可能做到。
我倾向于质疑是否真的需要首先保护客户端代码。是什么让它如此独特以至于这是必要的?无论如何,任何类型的敏感数据操作都应该在服务器端完成,因为每种混淆方法都只是不完善的保护。