mysql - 如何安全地存储密码以备后用

标签 mysql password-protection

我有一个 Web 服务,我必须在其中保存用户密码,以便以后可以与其他网站交互,我需要最安全的方式来存储此密码,并且仍然能够在需要时恢复其原始形式。 我知道,因为我需要恢复其原始形式,所以没有太多选择,但我需要最好的。

我真的需要原始状态的密码,因为我的网络服务后来访问了一个不是我的网站,我必须输入原始密码

最佳答案

如果我对您的问题的理解正确,那么您只有一对或几对用户/密码要保存为网络服务配置的一部分。

根据我在许多项目中的经验,其中一些是针对真正关心安全性的机构客户的,从开发人员的角度来看,解决方案很简单:

  • 将密码作为打开的文本保存在配置文件中

现在你可能会问:“保安到底在哪里?”对软件开发人员的回答是“不关你的事”。在生产服务器上设置应用程序将是系统管理员的工作。该管理员将确保:

  • 该文件包含连接到可能包含敏感数据的生产系统所需的正确用户/密码
  • 该文件只能在本地访问,并且只能由运行网络服务的用户访问
  • 该文件保存在加密磁盘上,因此如果他拔下磁盘并将其连接到不同的系统,其他人将无法读取该文件

(好吧,我从来没有担任过这样的管理员,所以我可能遗漏了一些东西......)

在我工作的特定项目中设置配置文件的示例:

  • 在 SVN 中有一个 config.properties,其中包含不包含任何敏感数据的测试环境的用户/密码,因此我们不关心存储库的任何用户是否可以读取这些密码
  • 在加载 config.properties 之前,系统会查看是否存在名为 config.properties.local 的文件,然后加载该文件而不是 config。属性 如果存在。此本地文件被 SVN 忽略且未提交。
  • 因此,通过这个 config.properties.local,开发人员可以在开发环境和相同环境中使用他的值覆盖 config.properties 中的用户/密码部署应用程序的管理员使用此 config.properties.local 提供生产用户/密码并确保文件安全的方式,如上所述。

编辑:事实上,最终我建议保存到一个受适当访问权限和文件系统加密保护的纯文本文件中。

虽然这仍然是我在安装应用程序时经常看到的常见解决方案,但您可能应该为此目的使用操作系统内置的支持。

例如在我使用的 Ubuntu 中,有 Gnome Keyring .一种密码管理器,可以安全地存储加密密码并在应用程序再次需要时解密它们。用户登录后自动解锁,使用方便。 GUI 称为 Seahorse(预装在 Ubuntu 中)。对于 CLI 安装 apt 包 libsecret-tools(实用程序 secret 工具)或搜索适合您的编程语言的 API。

关于mysql - 如何安全地存储密码以备后用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075970/

相关文章:

mysql - 为什么此查询在这种条件下不起作用?

mysql - SQL 计算所有行而不是计算单个行

MySQL - 无法在 HEAP (MEMORY) 表中使用索引进行分组依据

多个操作系统中的 MySQL 数据库

php - 使用 Ghostscript 密码保护 PDF

php - 密码保护页面?(具有数据库访问权限)

android - 防止 Facebook Android SDK 将密码显示为纯文本

security - "Remember Me On This Computer"- 它应该如何工作?

python - 如何在 python 脚本中隐藏我的登录名和密码?

MySQL 日期匹配错误?