去除密码的盐分

问题描述 投票:0回答:0

我制作了一个增长缓慢的 Web 应用程序,但已经有了一些用户群,当我第一次创建身份验证和注册系统的代码时,我决定在密码中添加一个环境值。今天我开始看到盐是不必要的,因为我正在使用 bcrypt 并且 bcrypt 已经有一个加盐系统。所以我想从密码中删除盐

我想这样做的方式是通过迁移到数据库来更新生产代码,为每个用户添加一个

isPasswordSalted
列(默认为true),下次他们登录时,盐将从他们的密码(通过比较加盐密码和散列,如果相同,散列未加盐的明文密码并更新数据库)

“问题”是我真的不想在表中创建一个仅用于记住密码是否加盐的列。这似乎很unecesarry

所以我想知道以下是否安全:

const salted = process.env.SALT + req.body.password;
if (bcrypt.compareSync(salted, user.password) {
   // Replacing user.password with unsalted password
   user.password = bcrypt.hash(req.body.password, 12);
} else if (bcrypt.compareSync(req.body.password, user.password) {
   // Authentification is alreayd ok since req.body.password is already correct
} else {
   // Bad authentification
}

或者如果这段代码可能会产生一些问题(比如这会为攻击者创造 2 次猜测密码的机会)

security bcrypt
© www.soinside.com 2019 - 2024. All rights reserved.