我目前正在研究一个处理多个用户的Web应用程序。虽然它目前有效,但它依赖于我将在一分钟内概述的一些真正的不良做法。Node.js用户系统
我们使用MySQL作为数据库系统,因为我们更新我们目前的应用中,我们要确保一切是向后兼容的。否则,我会看看MongoDB等。
我们的用户存储在一个恰当地命名为login
的表中。这包含他们的用户名,电子邮件,散列密码等和一个字段,其中包含一个JSON编码的对象的偏好。通过使用meta表没有这样做的真正原因。
所以一些不良行为:
- 我们存储整个用户的登录行,但不包括自己的密码(虽然这是仅供内部使用的应用程序)在cookie中。它是JSON编码的。
- 用户登录后,我们有一个安全的HTTP cookie,只能通过Node.js读取其用户名和密码,以便我们可以继续保持用户自动登录。
- 我们有一个
app.get('*')
路线,其不断地确保用户拥有自己的3个曲奇,并与新的偏好更新其acc
的cookie。这意味着每次用户切换页面或访问新的AJAX项目(全部在相同路径下)时,它们都有一个更新的cookie。 - 用户每次执行,我们这样做是为了让他们的用户ID的动作:
JSON.parse(res.cookies.acc).agent_id
呸!现在
,每个用户能够执行操作页面上的某些元素,这影响大家的应用程序是内部和任何人都可以对数据进行工作的这里面。
我知道我想要什么,实现以及应如何在PHP说做,但我想不出在Node.js的最有效的方法
我开始创建用户模块,它将使我们能够得到谁执行的动作和整齐地更新自己的喜好等,你可以看到在考虑到这一here轴承,这是一个WIP用户。我对该模块的问题是,它无法访问用户cookie,因为它不是“Express”的一部分。这解释了最后的不良做法。
什么会来处理这样的系统,并保持坏实践自由的最佳方式?
不要将密码存储在cookie中。相反,请签署Cookie,以便知道它来自您的应用。 – SLaks
这是一个安全的cookie,'res.cookie('pass',account.pass,{expires:new Date(Date.now()+ 63072000000),httpOnly:true});' – James
错误;这是一个稍微不安全的cookie。1)您将明文密码存储在浏览器的Cookie数据库中。 2)您将在每个请求中发送明文密码,而不使用SSL。 3)你完全参与明文密码。 4)攻击者可以在“过期”之后重新使用cookie。 – SLaks