2017-10-28 90 views
0

我有一个运行在nodejs上的JavaScript应用程序。它读取stdin以获取用户名和密码以访问一些在线服务。保护Node js运行时或禁用调试/检测

如果需要重新登录,这些凭证保留在应用程序运行期间(24/7)的整个变量中。

访问服务器的人是否可以“调试”应用程序并获取这些变量,就像人们在浏览器中一样?或任何其他方式。

我对节点的内部工作仍然有点不甚了解。编程: 该应用程序正在Docker容器上运行!

回答

2

这取决于服务器。如果他们拥有root或Administrator管理员,他们可以通过多种方式获得访问权限,直至包括直接从内存中读取它们。如果他们使用的是标准帐户,那么只要他们没有与您的应用在同一个帐户上运行,则可能会更安全。这总是一种可能性,但您可以通过使用单独的帐户,限制操作系统用户对机器的访问以及至少对凭证进行加密来最大限度地降低风险。还要确保权限已设置,以便他们不能写入或读取应用程序代码,并且如果他们不应该执行它,也要阻止它。至于调试节点,我的理解是你必须在调试模式下显式运行它。但还有其他方法可以肯定,所以最好限制访问权限,特别是对服务器的物理访问权限,并使用加密。更好的是,如果你能以加密形式卸载这些证书并清除任何持有它们的变量。

+1

@Aus 1.必须假设攻击者**将获得root /管理员权限。 2.将双因素身份验证设置为服务器。 – zaph

+0

@zaph我编辑了这个问题,它在一个Docker容器上运行,我不知道它是相关的。 – Aus

+0

它在Docker上运行,我正在阅读使用“节点”用户而不是默认的根。 – Aus