我正在重新编写一个支持用户身份验证的全栈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...})
}