我可以在前端和后端加密密码吗?

Can I encrypt password on both frontend and backend?

我正在制作一个需要登录的应用程序。

我用 node.js 作为 API。

我知道我必须在后端加密密码以防数据库被盗。 但是,如果由于某种原因 HTTPS 失败或我们这边的某些开发人员有恶意 he/she 如果原始密码也未在前端加密,则可以轻松窃取原始密码。

所以我的问题是,如果我同时使用后端的 Argon2 和前端的 BCrypt 会不会有问题?

(我还假设 Argon2 速度更快,所以如果攻击者想要蛮力,他也必须在他身边使用慢速的,而不是我的 api 重型 his/hers shannigans)

我知道有一些类似的问题,但他们问我是否应该使用一个或另一个,答案是后端和 HTTPS。

我将使用 HTTPS 和后端加密。但我问是否也可以(或一个好主意)在前端使用加密。

Argon2 和 BCrypt 不是加密算法。它们是密码拉伸器(正式名称为“PBKDF”或“基于密码的密钥派生函数”)。但是,同时使用两者没有意义。

您要找的设计是这样的:

  • 在前端应用密码扩展器,这样就不会将原始密码发送到服务器。
  • 在后端应用快速哈希 (SHA-256),这样哈希后的密码就不会存储在数据库中。

第一部分保护用户。他们的密码永远不会离开他们的机器。第二部分保护您的数据库。即使它被盗,攻击者也无法使用存储在那里的哈希值登录您的系统。