用于存储用户信息的 Node.js req.session

Hel*_*ere 1 javascript node.js

这可能是也可能不是菜鸟问题,因为我使用 Node.js 已经有一段时间了,但我想知道使用 req.session 语句有多安全。

我目前正在开发一个 web 应用程序,后端在 node.js 中,前端在 angular.js 中。对于后端,我使用 req.session 来检查用户是否是管理员。我知道 req.session 严格绑定到请求方。但它实际上有多安全?这是可恶的吗等等...

例如,我在登录时使用此代码:

req.session.user = new User();
req.session.user.isAdmin = user.isAdmin;
Run Code Online (Sandbox Code Playgroud)

等等...

所以我想知道的是,如果多个用户同时使用后端,首先,node.js 会不会混淆,其次,这种方法是否可以欺骗或证明?

jfr*_*d00 7

Express 会话使用 cookie 将浏览器与会话连接。只能通过入侵您的服务器(窃取或修改到达服务器的数据)、入侵登录系统(冒充其他用户)或在登录后窃取 cookie 来入侵会话。

会话本身仅在您的服务器上(或您的服务器可能存储它的任何地方)。会话本身不与客户端交换。只有用作会话索引的 cookie 才会与客户端交换。客户端然后在每个后续请求中呈现这个 cookie,这允许 node.js 识别这是哪个用户,然后查找该用户的会话对象(在服务器会话存储中)。因此,会话基本上与 cookie 和会话存储一样安全。如果有人可以获取 cookie 或闯入商店,那么他们就可以冒充登录用户或直接访问会话数据。

因此,整体安全性取决于以下几点:

  1. 您的登录过程被黑客入侵的安全性如何?
  2. 您的服务器和服务器数据对入侵者的安全性如何?
  3. 您是否使用适当的 HTTPS 传输和服务器证书来保护传输中的 cookie。
  4. 最终用户的计算机是否安全,以便 cookie 不会被窃取并在它们过期之前被冒名顶替者使用?
  5. 您是否在登录 cookie 上使用了适当的到期日期以减少其他人使用受损 cookie 的机会?

登录系统本身往往是一个薄弱环节。如果您不需要强大的凭据或者您的用户没有保护他们的凭据,那么显然其他人可以进入,但这与会话安全性没有任何关系。

如果您的服务器无法抵御黑客攻击,那么人们可以闯入以拦截 cookie,甚至可能会做更糟糕的事情来破坏服务器或会话。

如果您没有使用具有所有适当保护措施的 HTTP,则 cookie 可能会在传输过程中被盗(尤其是通过非安全 WiFi),并且被盗的 cookie 可用于冒充用户并访问他们的数据或执行允许用户执行的操作去做。

如果最终用户的计算机本身不安全,那么某人可能能够实际使用该计算机,或者可能能够窃取可能被冒充者在过期之前使用的 cookie。


如果上述所有事情都做得好,Express 会话就非常安全,并且它们使用与 Google、Facebook、Wells Fargo、B of A 等相同类型的基于 cookie 的会话方案...用于他们的登录会话。

所以我想知道的是,如果多个用户同时使用后端,首先,node.js 会不会把事情搞混?

node.js 本身永远不会混淆。您的 node.js 代码必须确保它永远不会混淆,因为可以同时处理多个请求。但是,每个请求有它自己reqres对象所以只要你只能通过访问会话req对象,而不是把会话数据到变量,可能是在同一时间运行的其他请求访问,那么它就再也不会混向上。所以,这是在你的代码上不要做导致并发问题的事情。node.js 本身和 Express 会话没有自己的并发问题。在这方面,他们是安全的。

其次,这种方法是可欺骗的还是防黑客的

见上面的讨论。