【问题标题】:Password encryption with passport.js使用passport.js 进行密码加密
【发布时间】:2016-04-10 12:45:15
【问题描述】:

我正在构建一个以 express.js 作为后端的单页应用程序。目前我正在使用 passport.js 本地策略进行身份验证,使用 bcrypt 将加密密码保存在 db 上。在认证过程中,用户提供的密码被再次加密,并与存储在数据库中的密码对峙。但是,我目前将密码以明文形式发送到服务器,并且我理解这是一种非常糟糕且不安全的做法。要正确执行此操作,我理解我必须:

  • 在服务器上创建随机字节并发送给客户端

  • 在客户端创建随机字节

  • 将加密后的密码和两组字节连接起来,全部加密

  • 将加密对象和客户端生成的字节以明文形式发送回服务器

  • 在服务器上重现相同的加密对象并检查有效的身份验证

我可以在客户端使用 bcrypt 和一些随机生成器再次执行此操作,但我有强烈的感觉,我不应该自己实现它。与护照或某些我不知道的节点库有一些集成?

【问题讨论】:

  • 这行不通。您绝对肯定需要 TLS (SSL) 来保护从服务器到客户端的通信。有更安全的选择,但它们的工作量很大。在短期内,你能做的最好的事情就是打开 TLS,不要摆弄像这样疯狂的事情。

标签: node.js security authentication passwords passport.js


【解决方案1】:

您可以使用 HTTPS (SSL) 来加密服务器-客户端之间的通信

【讨论】:

  • 这对于安全的网络应用程序来说足够了吗?
  • 这解决了密码在传输过程中是明文的问题,但并没有解决服务器知道明文密码,能够将其写入日志等问题。几乎没有人可以,但最佳做法是在客户端上散列密码,发送该散列,然后在服务器上重新散列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
相关资源
最近更新 更多