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

时间:2016-09-01 23:34:38

标签: javascript node.js

这可能是也可能不是noob问题,因为我一直在使用Node.js,但我想知道使用req.session语句是多么安全。

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

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

req.session.user = new User();
req.session.user.isAdmin = user.isAdmin;

等...

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

1 个答案:

答案 0 :(得分:4)

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

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

因此,总体安全性取决于这些:

  1. 您的登录过程有多安全?
  2. 您的服务器和服务器数据对入侵者的安全性如何?
  3. 您是否使用适当的HTTPS传输和服务器证书来保护传输中的Cookie。
  4. 最终用户的计算机是否安全,以便不能从中窃取cookie,然后在模仿者到期之前使用它?
  5. 您是否在登录Cookie上使用了适当的过期日期,以减少其他人使用受感染Cookie的机会?
  6. 登录系统本身通常是一个薄弱环节。如果您不需要强大的凭据或者您的用户没有保护他们的凭据,那么显然其他人可以进入,但这与会话安全性无关。

    如果你的服务器对黑客不安全,那么大家可以闯入拦截cookie,甚至可能做更坏的事情来破坏服务器或会话。

    如果您没有使用具有所有适当安全措施的HTTP,那么cookie可能会在传输中被盗(特别是在非安全WiFi上),并且被盗的cookie可用于冒充用户并访问其数据或执行允许用户这样做。

    如果最终用户的计算机本身不安全,那么有人可以在物理上使用该计算机,或者可以窃取模仿者在到期之前可以使用的cookie。

    如果以上所有事情都做得很好,Express会话非常安全,他们使用相同类型的基于cookie的会话方案,Google,Facebook,Wells Fargo,A等等......用于他们的登录会话

      

    所以我想知道的是,如果多个用户正在使用后端   同时,首先,不会发生node.js会混合的情况   事情呢?

    node.js本身永远不会混淆。你的node.js代码必须确保它永远不会混淆,因为同时有多个请求在进行中。但是,每个请求都有自己的reqres对象,因此只要您通过req对象访问会话,并且不会将会话数据放入可能可访问的变量中对于同时运行的其他请求,它永远不会混淆。所以,这是你的代码不要做一些导致并发问题的事情。 node.js本身和Express会话没有自己的并发问题。在这方面他们是安全的。

      

    和第二,这种方法是可欺骗的还是黑客证据

    见上述讨论。