我正在制作一个需要登录的应用程序。
我使用 node.js 作为 API。
我知道我必须在后端加密密码以防数据库被盗。 但是,如果由于某种原因 HTTPS 失败或我们这边的某些开发人员有恶意,他/她可以很容易地窃取原始密码,如果它也没有在前端加密的话。
所以我的问题是,如果我同时使用后端的 Argon2 和前端的 BCrypt 会不会有问题?
(我还假设 Argon2 更快,所以如果攻击者想要暴力破解,他也必须在他这边使用慢速的,而不是我的 api 重载他/她的 shannigans)
我知道有一些类似的问题,但他们问我是否应该使用一个或另一个,答案是后端和 HTTPS。
我将使用 HTTPS 和后端加密。但我问是否也可以(或一个好主意)在前端使用加密。
最佳答案
Argon2 和 BCrypt 不是加密算法。它们是密码拉伸(stretch)器(正式名称为“PBKDF”或“基于密码的 key 派生函数”)。但是,同时使用两者没有意义。
您正在寻找的设计是这样的:
- 在前端应用密码扩展器,这样就不会将原始密码发送到服务器。
- 在后端应用快速哈希 (SHA-256),这样经过哈希处理的密码就不会存储在数据库中。
第一部分保护用户。他们的密码永远不会离开他们的机器。第二部分保护您的数据库。即使它被盗,攻击者也无法使用存储在那里的哈希值登录您的系统。
关于encryption - 我可以在前端和后端加密密码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67201493/