在node.js中,我如何遵循最小权限原则?

Tim*_*art 8 security node.js

想象一下执行两个主要功能的Web应用程序:

  1. 从需要更高权限才能读取的文件提供数据
  2. 从需要较低权限才能读取的文件中提供数据

我的假设:为了允许读取两个文件,我需要使用可以读取这两个文件的帐户来运行节点.

如果节点在可以访问这两个文件的帐户下运行,则由于Web应用程序代码中的安全漏洞,不应该能够读取任何需要更高权限的文件的用户可能会读取这些文件.这将导致我想象中的Web应用程序世界带来灾难性后果.

理想情况下,节点进程可以使用最小权限集运行,然后在访问系统资源之前临时升级这些权限.

问题:节点可以暂时升级权限吗?或者,还有更好的方法?

如果没有,我正在考虑运行两个不同的服务器(一个具有更高的权限,一个具有更低的权限),然后将它们放在代理服务器之后,该服务器在转发请求之前进行身份验证/授权.

谢谢.

ont*_*ia_ 1

这确实是一个棘手的案例。最终文件权限是一种元数据。我的建议不是直接访问文件,而是以数据库表的形式在文件之间建立一些层,或者任何可以将用户类型映射到文件的东西,并将文件流式传输给用户(如果存在)。

这意味着所谓的 Web 应用程序不能简单地规避文件系统权限。您甚至可以将其设置为使所述文件没有服务器可读权限,而只能由中间层读取。它所能做的就是拨打电话,看看具有给定权限的用户是否可以访问这些文件。如果您选择的话,您还可以在多个 Web 应用程序之间共享。另外,由于中间层的作用非常具体,您可以强制执行一组非常有限的调用。

现在,如果权限较低的用户以某种方式获得了权限较高的用户帐户的访问权限,他们将能够看到该文件,并且没有办法真正解决锁定用户帐户的问题。然而,这是开发过程的一部分。