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

Tom*_*čka 4 encryption api-design

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

我使用node.js作为API。

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

所以我的问题是,如果我在后端使用 Argon2 并在前端使用 BCrypt 会出现问题吗?

(另外我认为 Argon2 更快,所以如果攻击者想要暴力破解,他也必须使用慢速的,而不是我的 api 重载他/她的 shannigans)

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

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

Rob*_*ier 8

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

您正在寻找的设计是这样的:

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

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