【问题标题】:How to save and use file "safely" in express nodejs?如何在express nodejs中“安全地”保存和使用文件?
【发布时间】:2021-08-08 07:25:42
【问题描述】:

我想在我的项目中保存用户文件,例如用户的个人资料图像(jpg)或用户的成绩信息(xml)。

现在,我知道了

  • 如何在express中实现上传过程
  • 如何在 express 中使用静态文件路径(在“public”目录)(对于“CSS”、“JS”、“page image”)

但是,如果我将用户的文件上传到公共目录中,客户端可以使用诸如“my_website/public/.../....xml”之类的 url 访问公共目录中的文件。我认为这对安全性不利,因为每个人都可以访问其他人的头像、成绩信息等。

所以,我的问题是

  • 是否可以将用户的敏感信息保存在公共(静态)目录中?
  • 如果没有,除了数据库还有什么方法可以安全保存文件吗?
  • 在真实网站中,用户的敏感信息文件保存在哪里?它是否与 main.js 等服务器文件位于同一目录中?还是完全是另一台服务器?

【问题讨论】:

  • 把它存储在另一个文件夹中,在某个地方,不要公开。

标签: node.js express file security


【解决方案1】:

是否可以将用户的敏感信息保存在公共(静态)目录中?

不,不行。这允许任何人访问私人信息。

如果没有,除了数据库还有什么方法可以安全保存文件吗?

是的,还有其他方法。例如,您可以将用户的信息存储在仅为该用户提供的目录中,并且只允许用户访问他们自己目录中的数据。这显然需要使用某种用户名和凭据/密码进行身份验证。您不会使用express.static() 访问私人信息。相反,您将为每种类型的资源创建一个路由,验证登录用户是谁,并仅提供对属于该登录用户的资源的访问权限。

在真实的网站中,他们将用户的敏感信息文件保存在哪里?它是否与 main.js 等服务器文件位于同一目录中?还是完全是另一台服务器?

有很多方法可以实现用户特定的存储,但它不太可能与其他服务器资源(如代码文件)存储在同一目录中。用户特定的数据将存储在其他地方。

【讨论】:

  • 感谢您的精彩回答!那么,如果我将用户的文件保存在另一个目录中,如何在没有静态目录的情况下使用 html 中的文件?例如,如何在某些 html 文件中使用 ,而不使用静态路径?
  • @sms - 为 /user/profileImage 或任何您希望将 URL 用作个人资料图像的路由,在该路由的代码中,查看登录的用户,然后使用 res.sendFile() 发送该特定用户的图像。相同的路由适用于所有用户,因为路由中的代码将为该特定用户获取适当的图像。
猜你喜欢
  • 1970-01-01
  • 2020-02-20
  • 2017-02-05
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多