【问题标题】:Authentication Practices with Node ExpressNode Express 的身份验证实践
【发布时间】:2020-07-28 12:26:08
【问题描述】:

我使用 Cookie-Parser 和/或将 Token 发送到前端,使用 Express 为我的后端 API 构建了一个简单的身份验证系统。

它的工作原理是这样的:用户使用用户名和密码向登录路由发出 post 请求,如果匹配,他将返回带有令牌的 .json 响应和带有令牌的 cookie。

我认为对于前端开发和授权目的来说,让当前用户在登录后的每个后续请求中都可用会很好。因此,我设置了一个中间件,用于搜索是否有令牌,尝试在数据库中查找具有相应 ID 的用户,并将用户信息(没有密码)设置为请求对象 (req.user) 中的参数。

我想知道的是:

将用户信息放在请求中是一种不好的做法吗?它会导致安全问题吗?或者,如果应用规模太大,每个请求中的数据库查询可能会使服务器过载?

这是我的第一个后端 API,我正在尝试不同的做事方式,但我不了解该领域的最佳实践。非常感谢任何帮助!

【问题讨论】:

    标签: mongodb express authentication mongoose


    【解决方案1】:

    这就是为什么存在加密,在这种情况下它是一个 ssl 票。如果您将登录详细信息添加到您需要确保 http 响应已加密的请求中。一旦它被加密,就可以做你正在做的事情了。如果不是,eaves dropper 可以通过嗅探您的网络来获取该数据。

    【讨论】:

    • 谢谢!是不是意味着只要服务器运行在https上就没有问题?有没有一种简单的方法可以在 Node 上做到这一点? setCookie 函数中有一个 options 参数可以确保它的安全,但我猜它还有更多的功能?
    • 是的。由于所有数据都是加密的,并且从公钥中获取私钥在计算上不是很可行,因此能够将请求/响应转换为攻击者可以读取的内容,因此在安全上发送什么并不重要联系。您需要生成一个 ssl 票证并在您的节点应用程序中使用它。要使用它,请下载名为 fs 和 https 的库。然后制作一个 httpsOptions,它采用 ssl 文件夹的证书文件和密钥文件的路径。然后将此对象包含在您的连接中。如果您打开一个新问题,我将向您展示所需的代码。
    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2014-12-01
    • 2014-01-23
    • 2013-01-17
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多