Я переписываю полноценную программу Node.js, которая поддерживает аутентификацию пользователей. У меня есть три соответствующих модуля:
- api
Где определены маршруты Express.js
- models
Где определены схемы
- services
Который обрабатывает всю бизнес-логику
Скажите, что я хочу обработать регистрацию пользователя. Класс api/UserRoute
получит веб-запрос на регистрацию пользователя. Затем UserRoute вызовет класс UserService
для регистрации пользователя, который, в свою очередь, сохранит данные в базе данных через класс models/UserModel
. Теперь вот мой вопрос:
На каком этапе должен быть хеширован пароль? Должен ли он быть хеширован на стороне клиента, прежде чем он будет отправлен как веб-запрос? Будет ли плохой практикой разрешать 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...})
}