【问题标题】:Security in nodejsnodejs中的安全性
【发布时间】:2018-06-24 06:30:19
【问题描述】:

我是 NodeJS 的新手,并且使用护照制作了 Web 应用程序登录功能。

我知道当有人注册帐户时,应用程序需要对他们的密码进行哈希处理并将哈希值保存到数据库中。但是当我使用console.log() 时,该对象仍然包含用户的纯文本密码。我觉得它不安全,但我不知道如何解决这个问题。谁能解释我在这里做错了什么?

【问题讨论】:

  • 作为一般经验法则,不要在生产环境中推出自己的安全例程。
  • 你在使用 https 吗?我也同意 @David Stockinger - 你不应该在生产环境中使用自己的安全例程
  • 首先,您需要发布您的代码。其次,这可能会有所帮助:stackoverflow.com/questions/37668680/… .

标签: node.js security express passport.js


【解决方案1】:

我只想说不要使用第三方 API 或包

【讨论】:

    【解决方案2】:

    不要太在意。

    如果恶意代理可以访问您服务器的运行时环境,他可能会做任何事情。即使您使用的是 jwt,他也可以轻松获取秘密并对其进行解码。

    专注于:

    • 在数据库中加密密码(你做得很好)

    • 在您和服务器网络上的入口点之间使用 SSL

    • 确保只暴露必要的部分,在服务器外部设置防火墙/屏障是一种非常好的做法

    • 清理和验证您的服务器输入以避免注入和漏洞利用

    【讨论】:

      【解决方案3】:

      无论是 node.js 还是其他用于后端开发的框架,以加密格式传递密码等敏感数据是一种很好的做法。

      通常我们更喜欢使用 Json Web Tokens(JWT) - https://jwt.io/

      您可以使用https://www.npmjs.com/package/jsonwebtoken对其进行加解密。

      【讨论】:

      • 不,通常您使用 bcrypt、pbkdf2、argon2 或 scrypt 对密码进行哈希处理。
      • 那么,通过网络以纯文本形式传递密码可以吗?
      • 不,你通过 https 传递它。 JWT 在这里没有任何价值。
      • JWT 被视为访问令牌,而不是密码加密
      猜你喜欢
      • 2011-09-15
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      • 1970-01-01
      相关资源
      最近更新 更多