存储Web服务密码的最佳实践

时间:2012-12-08 09:14:07

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

情景:

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

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

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

任何提示?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

同时阅读Is it secure to store passwords as environment variables (rather than as plain text) in config files?可以提供帮助。