2016-08-29 4 views
0

У меня есть форма регистрации и входа, в которой для шифрования пароля используется идентификация pass.js и bcrypt, но я заметил, что в моем представлении формы метода POST отображается значение пароля в текстовом формате, шифрование bcrypt. Я тестирую это локально, но планирую включить https. Должен ли я нервничать по этому поводу? Есть ли какая-то корректировка, которую я должен внести в теги формы, которые я не включаю?Expressjs Скрытая чувствительная информация POST

form data

Форма:

<h1>Login</h1> 
      <form action="/login" method="post"> 
       <input type="text" class="form-control" id="login-username" name="email" value="" placeholder="Email"> 
       <br /> 
       <input type="password" class="form-control" id="login-password" name="password" value="" placeholder="Password"> 
       <div class="login-buttons"> 
        <button type="submit">Login</button> 
       </div> 
      </form> 

Вот мой маршрут Логин:

siteRoutes.route('/login') 

    .get(function(req, res){ 
     res.render('pages/site/login.hbs',{ 
      error: req.flash('error') 
     }); 
    }) 

    .post(passport.authenticate('local', { 
     successRedirect: '/app', 
     failureRedirect: '/login', 
     failureFlash: 'Invalid email or password.' 
    })); 

Passportjs аутентификации Логин:

//Login logic 
passport.use('local', new LocalStrategy({ 
    passReqToCallback: true, 
    usernameField: 'email' 
}, function(req, email, password, done) { 
     console.log("Database query triggered"); 
     //Find user by email 
     models.User.findOne({ 
      where: { 
      email: req.body.email 
      } 
     }).then(function(user) { 
      if (!user) { 
       done(null, false, { message: 'The email you entered is incorrect' }, console.log("Unknown User")); 
      } else if (!user.validPassword(password)){ 
       done(null, false, console.log("Incorrect Password")); 
      } else { 
       console.log("User match"); 
       done(null, user); 
      } 
     }).catch(function(err) { 
      console.log("Server Error"); 
      return done(null, false); 
     }); 
    })); 

ответ

1

Стандартная практика, не нужно беспокоиться. Go проверить, что вы отправляете при входе в Facebook, например. Просто убедитесь, что вы используете SSL в процессе производства, чтобы защитить эту конфиденциальную информацию.

Чтобы проверить, соответствует ли он хэш, вам нужен пароль в текстовом формате. Если вы отправите хэш и просто сравните это с хешем в базе данных, ваша база данных будет эффективно содержать простые текстовые пароли для каждого пользователя. В конце концов, хэш - это просто строка.

Для более объяснения сравнения, проверить https://stackoverflow.com/a/6833165/3349511

+0

спасибо большое за ваш ответ. Убирает мои вопросы и спасибо за ссылку! – cphill

Смежные вопросы