【问题标题】:Best practice to store web service password存储 Web 服务密码的最佳实践
【发布时间】:2012-11-26 09:36:34
【问题描述】:

场景:

  • Web 应用程序 (RoR 3.2) 需要与远程 Web 服务(SOAP,使用 Savon gem)通信。
  • Web 服务需要用户名和密码。
  • 通信是 SOAP,流量是通过 VPN(SOAP 没有 SSL)。
  • 我需要存储远程 Web 服务管理员给我的密码。
  • Web 服务管理员要求我以安全的方式存储密码。
  • 当我的网络服务器调用网络服务时,我需要使用明文原始密码。
  • Bcrypt 是存储密码的最佳方式,但它是“一种方式”。
  • 我无法发送加密密码,我需要一种解密方法才能将其发送到 Web 服务。

这似乎是一个“鸡与蛋”的问题。

有没有办法安全地存储密码并能够解密它以用于自动化服务?

有什么提示吗?

【问题讨论】:

标签: ruby-on-rails web-services soap bcrypt savon


【解决方案1】:

如果加密信息需要以纯文本形式发送,如何使用强可逆密码,这可能是 Web 服务管理员的意思。

在使用(例如)AES 加密进行加密之前,您可以添加其他信息作为盐(使用您熟知且可以通过算法应用的任何内容,例如名称)。
然后您可以将加密的密码存储在您选择的位置。

【讨论】:

  • 是的,这就是我要尝试的方式(与我之前发布的链接中建议的几乎相同;一旦找到合适的解决方案,我就会发布它。
【解决方案2】:

我会将此密码存储在环境变量中(纯文本,经过混淆处理,无关紧要)以避免将其放入 VCS。

阅读Is it secure to store passwords as environment variables (rather than as plain text) in config files? 也有帮助。

【讨论】:

  • 感谢您的建议,但我非常领先于这些解决方案。我必须签署文件,确认其他人给我的密码已安全存储。因此,没有纯文本,没有安全性,配置文件中没有环境变量。在 VCS 中没有它是非常非常非常好的第一步......就像对外科医生说他需要戴手套......
猜你喜欢
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2010-11-25
  • 2013-10-09
相关资源
最近更新 更多