我有一个使用 postgresql 数据库在 express.js 中构建的网络应用程序。 我想知道如何实现安全性,但每个人都使用不同的东西(我想这是件好事?)。 不同的模块不同的认证序列等。 我现在有什么: 1)用户表单发布到例如/login 2)应用程序路由到特定路由 3)在 route 我尝试以下
var localconstring = "postgres://" + usr + ":" + pass + "@ip:port/db";
var client = new pg.Client(localconstring);
client.on('drain', client.end.bind(client));
client.connect(function (err, client, done) {
数据库使用 md5,所以 pass 已经被数据库保护了。
真正应该发生什么? 我应该对用户名和密码进行加盐和散列处理,然后将加盐/散列的凭据与盐一起保存,然后还使用数据库的 md5 吗? 如果是哪个模块?
我应该像那样登录还是尝试从 pg_roles/users 中选择 *??
非常感谢! (关于盐和散列,如果可能的话,一些详细的例子,因为我对身份验证安全性非常了解)
忘记说了。 cookies .. 身份验证后,我设置了以下 cookie:
res.cookie('user', req.body.lguser.username, { signed: true })
res.cookie('watcher', o, { signed: true })
然后再查一下
req.signedCookies.user !== undefined
签名属性安全吗?
最佳答案
您应该生成一个 key 。此 key 应保存在 cookie 和数据库中。然后当用户提出请愿时,你可以得到cookie上的 key 并在数据库上搜索用户。
有一些库可以帮助你解决这个问题,看看 Passportjs:
关于node.js - Express.js 如何在登录时和之后使用安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20284259/