Expressjs 隐藏敏感 POST 信息
Expressjs Hidden Sensitive POST Information
我有一个使用 passport.js 身份验证和 bcrypt 加密密码的注册和登录表单,但我注意到我的 POST 表单提交方法以纯文本形式显示密码值而不是 bcrypt 加密。我正在本地测试,但计划启用 https。我应该为此紧张吗?我是否应该对我未包含的表单标签进行某些调整?
形式:
<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);
});
}));
标准做法,不用担心。例如,在登录 Facebook 时检查您发送的内容。请确保在生产中使用 SSL,它可以保护敏感信息。
您需要在您的应用程序中使用纯文本密码来验证它是否与哈希匹配。如果您发送散列并将其与数据库中的散列进行比较,您的数据库将有效地包含每个用户的纯文本密码。毕竟,散列只是一个字符串。
有关比较的更多说明,请查看
我有一个使用 passport.js 身份验证和 bcrypt 加密密码的注册和登录表单,但我注意到我的 POST 表单提交方法以纯文本形式显示密码值而不是 bcrypt 加密。我正在本地测试,但计划启用 https。我应该为此紧张吗?我是否应该对我未包含的表单标签进行某些调整?
形式:
<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);
});
}));
标准做法,不用担心。例如,在登录 Facebook 时检查您发送的内容。请确保在生产中使用 SSL,它可以保护敏感信息。
您需要在您的应用程序中使用纯文本密码来验证它是否与哈希匹配。如果您发送散列并将其与数据库中的散列进行比较,您的数据库将有效地包含每个用户的纯文本密码。毕竟,散列只是一个字符串。
有关比较的更多说明,请查看