关于 passport.js 安全级别的问题
Posted
技术标签:
【中文标题】关于 passport.js 安全级别的问题【英文标题】:Question regarding passport.js' level of security 【发布时间】:2020-10-31 17:51:21 【问题描述】:只是有一些关于使用护照进行应用身份验证时可以预期的安全级别的一般性问题;
我目前正在使用 MongoDB、Express、React 和 Node.js 堆栈设计我的第一个应用程序。在没有太多关于网络安全的先验知识的情况下,我已经对身份验证以及我的网站上可能发生的攻击类型进行了大量研究。我选择在 passport.js npm 包中使用基于 cookie 的身份验证系统,并且我设计了我的 /login 路由,要求用户的密码和用户名首先通过 passport.authenticate('local', ....)在创建会话和 cookie 之前设置中间件。
为了将当前用户保留在我的反应应用程序中,我有一个函数请求服务器向它提供当前活动的护照会话(如果有的话) - 这似乎有效,因为它不会保持登录状态如果用户从浏览器中删除会话 cookie。
我对护照有点怀疑,我很想知道对它的工作原理有更深入了解的人会多么容易地破坏它,所以我想知道的事情有几个:
这种类型的身份验证设置安全吗?
是否有任何其他要求必须满足才能使护照成为 应用的合法身份验证方法?
使用护照对用户进行身份验证是否被认为是不好的做法?将展示一个应用程序 如果我要将这个应用程序展示给一个 潜在雇主?
如有必要,我可以共享代码以更好地说明我的代码设置,但如果可能的话,我不希望这样做。任何建议将不胜感激,谢谢!
TLDR: passport.js 是一种安全的用户身份验证方法吗?是否将 passport.js 用于这种不良做法?
【问题讨论】:
1.是的,但我不能说 100% 肯定你所做的是正确的。 Cookie 是会话身份验证处理的有效手段。 Passport 只是一个更高级别的接口。 2. 没有 3. 没有,但是对于只使用“任何护照”模块要格外小心——有些没有经过真正的审查。 ----- 话虽如此,我会让自己熟悉什么是基于 cookie 的身份验证,以及还有哪些其他选项。很多人喜欢用redis作为session store但是不要在redis上放密码????♂️ ***.com/questions/17769011/… 【参考方案1】:Passport.js 提供身份验证,而不是安全性。按照在线教程进行配置很容易出错,因此请注意 - 该工具的好用程度取决于它的实用性。要增加护照的安全性,您至少需要三个额外的元素:
-
会话(或令牌)的强状态模型不会泄漏私有字段并使用 argon2 进行密码散列。
使用 CSRF 或 XSS 在前端没有错误。
Node 本身的速率和缓冲区限制器,或者更好的是,在您的反向代理上。
【讨论】:
以上是关于关于 passport.js 安全级别的问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 passport.js 和 express.js (node.js) 制作安全的 oauth API
仍然需要使用带有 passport.js 的 cookie-parser 吗?
对passport.use(strategy) done 功能及其与passport.authenticate 的关系感到困惑