将未隐藏的密码作为功能参数传递是不好的做法吗?

时间:2019-10-01 15:08:14

标签: node.js security passwords

我正在重新编写一个支持用户身份验证的全栈Node.js程序。我有三个相关模块;
-api定义Express.js路由的地方
-models定义架构的地方
-services处理所有业务逻辑

说我要处理注册用户。 api/UserRoute类将收到网络请求以注册用户。然后,UserRoute将调用UserService类来注册用户,这又将通过models/UserModel类将数据持久保存到数据库中。现在这是我的问题:

应该在哪一步对密码进行哈希处理?是否应该在甚至将其作为Web请求发送之前在客户端进行哈希处理?允许UserService对密码进行散列会是不好的做法吗?

当前,我将让UserService对密码进行哈希处理,然后将其传递给要存储的数据库,但是如果在此之前不对密码进行哈希处理,我不确定是否会使我的应用程序容易受到攻击。

我正在计划的一些伪代码:

// UserRoutes
app.post('/register', (req,res) => {
    UserService.registerUser(req.email, req.password)
})
// UserService
registerUser(email, password) {
    const hashed = Auth.hashPassword(password)
    UserModel.create({... User Data Here...})
}

0 个答案:

没有答案