如何在 express nodejs 中保存和使用文件 "safely"?

How to save and use file "safely" in express nodejs?

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

现在,我知道了

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

那么,我的问题是

Is it okay to save user's sensitive information in public(static) directory?

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

If not, is there any way to save file safely except database?

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

In real websites, where they save user's sensitive information file? Is it in same directory with server files like main.js? or completely another server?

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