如何防止我的Node js代码被盗?

时间:2019-09-11 19:46:56

标签: node.js express

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

那么,如何保护我的代码不被盗?还是NodeJS是正确的选择?

您有任何教程或建议吗?

感谢和问候。

3 个答案:

答案 0 :(得分:0)

如果您的业务模型和客户支持您的公司拥有并运行软件运行硬件的想法(类似于IBM和Oracle的运行方式),并且团队中的某人可以在启动时就地部署(并非总是很方便),您可以在Linux上运行Node并使用LUKS加密数据,这将使攻击者(或公司间谍)很难在没有精心设计的黑客的情况下访问代码。

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

根据您对可靠性的需求,硬件不必很昂贵。您可以设置廉价的软件raid 1,该软件可以复制数据并在小型USB重击驱动器上安排加密备份。如果预算允许,您还可以在具有硬件突袭,冗余电源和加密硬件VNC的服务器级计算机上运行此设置,这将允许您远程解密LUKS(也就是说,远程VNC不是安全,因为hardware key loggers可能会在您不知情的情况下安装在服务器上。

这种硬件设置每个客户端只需花费几百美元,这将使您的服务更加“企业化”,并确保您的代码不会被篡改。

答案 1 :(得分:0)

如果您正在分发服务器软件,以便客户可以自己在内部运行服务器,则根本无法保护服务器源代码。如果node.js可以运行它,那么您客户站点中对服务器具有物理访问权限的任何人都可以看到源代码。

在客户启用了适当的保护后,您的服务器源代码将无法在外部使用,但是您必须依靠客户正确地安装和保护事物。

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

如果您要保护的秘密调味品数量相对较少,那么坚定的黑客就可以通过混淆的额外工作进行耕and,并且仍然可以使用算法。

最后,完全保护您的工作内部的唯一真正方法是不分发源代码(无论使用哪种语言或环境),也不要运行服务并让客户访问您的服务。即使使用像C ++这样的完全编译的语言(没有源代码分发),坚定的黑客仍然可以对关键算法或凭据进行逆向工程。

如果客户只接受他们在自己的场所购买和运行的服务器,那么我的猜测是您对这个逆向工程问题有过多的想法。除了迷惑之外,您尝试做的其他任何事情都会使您的产品和销售变得复杂,并使您的销售大幅减少,同时也并不能真正阻止坚定的黑客。

答案 2 :(得分:0)

计划A:

  1. 准备一个自托管的节点和数据库服务器。
  2. 然后使用唯一/安全/哈希API令牌公开用于安全产品信息的API。
  3. 每个供应商/公司都请求一个带有令牌的终结点,以使用绑定到客户端应用的安全产品信息。
  4. 然后创建一个客户端应用程序,该应用程序可能适用于X平台(Windows / Linux / android / iOS)。
  5. one time one user准备许可证激活过程。如果激活许可证,则send back to app client a api token for next request
  

当用户或公司安装此客户端应用程序时,他们必须要求许可证密钥[api-token],并且您需要提供此许可证密钥one time one user or company

因此,该服务器的原始源代码是进气源,也没有人可以窃取此脚本和数据库。