2017-09-26 55 views
0

我正在使用node.js.我正在考虑在会话变量中存储一个会话ID,这样每次我向某个路由发出请求时,服务器都会检查数据库中具有该会话ID的用户是否有权访问该页面。如何在没有数据库开销的情况下检查授权?

这似乎有点低效,因为每个页面请求都会有数据库调用。我知道我可以将一些数据存储在cookies/session变量中以避免数据库调用,但是我容易被篡改。

其他Web开发人员如何处理此问题?

回答

1

与https一起使用的服务器端会话和关联的加密会话cookie是安全的。所以,只要在服务器端会话中保留一个值,告诉你用户是否已经过身份验证,并且只需在服务器端会话对象中检查该变量即可。这就是我所知道的每个网站都会做的事情。

与适当的会话存储一起使用的NPM模块express-session将为您执行大部分操作。

如果你有一个特定的原因,为什么你认为这不安全,请分享这些原因,以便他们可以讨论。

以下是关于确保node.js服务器安全的一般性文章,第6条关于保护会话cookie:9 Security Tips to Keep Express from Getting Pwned

+0

我猜想我试图在会话cookie中尽可能少地存储信息,简单地说,如果有人“读取”cookie中的信息,他们不会了解有关网站内部功能的任何信息。我想一个签名的cookie和https应该有助于避免篡改。 –

+0

@KaizerSozay - 类似express-session的东西只在cookie中存储单个会话ID(只有长的加密字符串)。所有其他用户会话状态都存储在服务器端的实际会话对象中,服务器本身以外的任何人都无权访问该对象。 – jfriend00

+0

谢谢。我不知道! –

相关问题