Node.js 如何防止节点js代码被盗?

Node.js 如何防止节点js代码被盗?,node.js,express,Node.js,Express,我需要一些建议。我正在考虑使用NodeJS和Express开发新产品。本产品应以本地模式运行。因为,该产品将是信息安全产品,并将保留敏感数据。我只是想保证这需要很长时间才能逆转 那么,如何保护我的代码不被窃取呢?还是诺德的选择正确 你有什么指导或建议吗 感谢并致以最诚挚的问候。如果您的商业模式和客户支持您的公司拥有并运行硬件,您的软件运行方式与IBM和Oracle类似,并且您的团队中的某个人可以在启动时在场,这并不总是方便,您可以在Linux上运行节点并对数据进行加密,这将使攻击者或公司间谍很难

我需要一些建议。我正在考虑使用NodeJS和Express开发新产品。本产品应以本地模式运行。因为,该产品将是信息安全产品,并将保留敏感数据。我只是想保证这需要很长时间才能逆转

那么,如何保护我的代码不被窃取呢?还是诺德的选择正确

你有什么指导或建议吗


感谢并致以最诚挚的问候。

如果您的商业模式和客户支持您的公司拥有并运行硬件,您的软件运行方式与IBM和Oracle类似,并且您的团队中的某个人可以在启动时在场,这并不总是方便,您可以在Linux上运行节点并对数据进行加密,这将使攻击者或公司间谍很难在不进行精心黑客攻击的情况下访问代码

你提到你的服务很敏感。这种方法还有助于减少数据泄露,因为数据库也将被加密

根据您对可靠性的需求,硬件不需要昂贵。你可以安装一个便宜的软件来复制数据,并在一个小型USB重击驱动器上安排加密备份。如果预算允许,您还可以在服务器级计算机上运行此设置,这些计算机具有硬件RAID、冗余电源和加密硬件,允许您远程解密LUK。也就是说,远程VNC不那么安全,因为可以在您不知情的情况下安装在服务器上


这种硬件设置每台客户端只需几百美元,它将使您的服务更具企业感,并保证您的代码不会被篡改。

如果您分发服务器软件,以便您的客户能够自行运行服务器,那么您就无法保护您的服务器源代码。如果node.js可以运行它,那么在您客户站点上具有服务器物理访问权限的任何人都可以看到源代码

如果您的客户启用了适当的保护,您的服务器源代码将无法在外部世界使用,但您必须依靠您的客户正确安装和保护这些内容

您可以在分发源代码之前混淆源代码。这种将所有变量重命名为无意义名称的模糊处理根本不是真正的安全形式,但它确实使反向工程能够理解代码做了更多的工作,从而可能阻止一些人投入额外的工作,但它并不能阻止坚定的黑客进行反向工程

如果你试图保护的秘密内容相对较少,那么一个坚定的黑客可以通过额外的模糊处理工作,仍然可以使用你的算法

最后,要完全保护您的工作的内部,唯一真正的方法是不分发您的源代码,不管是哪种语言或环境,也不运行服务并让客户访问您的服务。即使使用完全编译的语言,没有源代码分布,如C++,一个确定的黑客仍然可以逆向设计关键算法或凭据。 如果客户只接受他们购买的并在其场所运行的服务器,那么我猜您是在过度考虑这个逆向工程问题。除模糊处理外,您尝试做的任何事情都会使您的产品和销售变得复杂,使您的销售明显减少,同时也不会真正阻止坚定的黑客。

A计划: 准备一个自托管节点和DB服务器。 然后使用唯一的/secure/hash API令牌公开安全产品信息的API。 每个供应商/公司请求一个端点,该端点带有用于绑定客户端应用程序的消费安全产品信息的令牌。 然后创建一个客户端应用程序,它可能适用于X平台Windows/Linux/android/iOS。 为一个用户准备一次许可证激活过程。如果许可证激活,则将api令牌发送回应用程序客户端,以供下一个请求。 当用户或公司安装此客户端应用程序时,他们必须要求一个许可证密钥[api token]以及您为一个用户或公司一次性提供的此许可证密钥


因此,这个服务器的原始源代码是可吸收的,没有人可以窃取这个脚本&DB。不清楚你具体在问什么。如果您使用的是NodeJS/Express,那么NodeJS代码位于服务器上,而不是客户端。您可以通过不让人们登录服务器来防止它被盗,就像其他服务器端安全问题一样。@DaveNewton嗨,朋友,我知道nodeJS是一种后端语言。我想问的是,如何在预置模式下部署nodejswriten产品?实际上,该产品将根据许可证出售给其他公司。所以,我担心我的密码被偷了。这是可以在网上搜索的。底线是,现在和将来,任何事情都可以进行逆向工程
你需要做一个投资回报率分析,看看它是否真的值得。可能不是。不要在前提下主持这个,如果你期望其他东西,很抱歉,但事实是-如果客户端有你的应用程序,它是javascript、.net或二进制c++并不重要:一切都可以逆转,只是技能和时间的问题。@WiktorZychla我已经知道任何东西都可以逆转。但是,该产品将是信息安全产品,并将保留敏感数据。因此,公司不想要云版本。因为他们甚至不信任供应商。我应该开发本地版本。我只是想保证这需要很长时间才能扭转。我不明白你的意思。OP需要一台客户专用服务器。您提到客户不拥有或操作服务器。你是怎么得到这些的?如果客户不拥有或操作服务器,谁拥有?@jfriend00,当Oracle向客户销售专有软件时,它通常使用Oracle操作的专有硬件。这种方法是保护源代码的好方法。为什么会有人否决这个答案?它回答了与代码无关的问题。它可能更依赖于服务器故障,而不是堆栈溢出,因为每个人都知道任何有权访问代码的人都可以对其进行反向工程,尤其是未编译的节点。如果您编辑您的答案,解释您建议OP销售安装在客户场所的专有和锁定硬件(如Oracle型号),这将使您的答案更容易理解。我不认为OP期望从事硬件销售业务,因此明确这一点对于解释您的答案很重要。