【问题标题】:How to securely store a password used for 3rd party service on my website如何在我的网站上安全地存储用于第 3 方服务的密码
【发布时间】:2019-08-14 13:35:01
【问题描述】:

我有一个使用 nodeJS 后端创建的网站,但我目前遇到了一个安全问题。

为了使我的网站正常运行,我需要使用需要用户名、密码和安全码的第三方服务登录。我必须能够全天自动多次登录多个帐户,我的网站才能正常运行。我没有存储任何用户信息,这是我自己的帐户信息。

显然,在我的一个类中以纯文本形式存储所有内容是一个坏主意,那么存储我的登录信息的最佳方式是什么?拥有一个只能通过内部数据在本地访问的数据库是一个不错的选择吗?正如我之前所说,它必须能够自动登录,所以我不确定散列是否会起作用,因为无论如何代码都必须解密它,所以如果我的代码暴露出来,真的很重要吗?

提前感谢您的帮助。

【问题讨论】:

  • 正如我所提到的,这是我自己的个人信息,而不是我的用户数据。我需要能够使用我自己的凭据登录到第 3 方。用户使用不同的第 3 方登录,我们不会获得任何用户数据
  • 糟糕,我的错误,对不起。所以您说您的应用程序需要使用您的第三方服务凭据从其他服务获取信息?
  • 我认为您要问的问题相当于您将 api 密钥存储在服务器上的哪个位置,以便您的服务器可以使用第三方的 api 访问数据。最好在网上搜索“我如何存储 API 密钥”,因为您的 uname/pwd 本质上是一个 API 密钥。网上有很多建议,所以要小心:)
  • 是的,这似乎是我之前的设置。似乎您和 JBallin 的建议是最好的选择。谢谢

标签: node.js security password-protection


【解决方案1】:

存储密码可能不是一个好主意,因为即使你加密它, 加密密钥仍然在服务器的某个地方。 您是否检查过 3rd 方服务是否以 oauth 或同等方式提供身份验证流程?

【讨论】:

  • 是的,没有其他方法可以进行身份​​验证。必须是用户名、密码和身份验证密钥。可悲的是真的没有办法解决这个问题:/
【解决方案2】:

您基本上是在问“我如何在后端存储秘密?”。

在本地,您将使用未提交版本控制的 .env 文件来存储您的机密(即“USERNAME=JBallin”)。

然后,您可以使用 dotenv 之类的东西将这些值提取到环境变量中并在后端使用它们。

在生产中,您会将这些环境变量存储在服务器上(说明取决于部署环境)。

【讨论】:

  • 使用环境变量似乎是个好主意,感谢您的帮助!
【解决方案3】:

有一种新技术 - 密码强化加密 (PHE) 协议 - 一种强大且革命性的加密技术,可提供更强大和更现代的安全性,保护用户数据并减少与弱密码相关的安全风险。

Virgil PureKit allows 开发人员与 Virgil PHE 服务进行交互,以保护数据库中的用户密码和敏感的个人身份信息(PII 数据)免受离线/在线攻击,并在您的数据库遭到破坏时使被盗密码/数据无用。 Virgil 和攻击者都不知道用户的密码/数据。

我为您提供了链接,您可以在其中找到以下语言的 code-sn-ps:Go、PHP、C#、Java

【讨论】:

    猜你喜欢
    • 2012-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2012-01-12
    • 2010-12-07
    • 2012-11-09
    • 2015-03-24
    相关资源
    最近更新 更多