node.js - Express.js 如何在登录时和之后使用安全性

标签 node.js security postgresql hash express

我有一个使用 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:

http://passportjs.org/

关于node.js - Express.js 如何在登录时和之后使用安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20284259/

相关文章:

html - 带有样式属性的安全风险(xss)

node.js - 使用 Node.js 作为 Shell

node.js - Graphql 仅在传递参数时执行 where 条件

node.js - NodeJS 在函数内部返回 true/false

.net - Azure WindowsCryptographicException : The specified network password is not correct when publishing despite correct password

python - 保护或许可 Django 应用程序

database - 是否需要在出错时执行 'ROLLBACK'?

performance - 基准 : bigint vs int on PostgreSQL

mysql - gitlab 健康检查不健康

node.js - Spotify Node Web api - 多个用户的问题