在配置中保护纯文本密码

时间:2014-08-01 07:15:46

标签: java security

在Web应用程序中,您必须存储用于连接数据库的密码。这主要是在纯文本的配置文件中完成的。

我一直在努力使其更加安全,并且看到了Jasypt(www.jasypt.org),它可以加密这些密码。但是你仍然需要一把钥匙来解密这些,这只会解决问题。然后我将此键移动到系统环境变量,因此它至少在应用程序之外。但我仍然认为这并没有真正改变很多?

其他人如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

不要将生产密码存储在源代码中的配置文件中。

这将使任何有权访问代码的人成为事实上的管理员。在生产服务器上设置的环境变量是一个很好的方法。您可以让应用程序从那里检索值,并为不同的环境(开发,测试,实时)设置不同的值。这允许例如sysadmin知道生产密码(他们无论如何都有访问权限,它是他们的工作),而不需要开发人员知道它们。

根据我的经验,效果很好。

答案 1 :(得分:2)

你必须问自己一个问题:我想从谁那里保护密码?

正如@Martin已经说过的那样,系统管理员总是可以访问,而他应该是维护系统的人。您无法隐藏服务器管理员的任何内容。

所以我会选择配置文件。为您的应用程序设置数据库的人员还将在配置文件中为数据库配置密码(和用户名)。

确保不是每个人都可以读取配置文件,这样只有特权用户才能读取该文件,这是您可以做的最好的。

答案 2 :(得分:2)

NOT 使用命令行参数将密码传递给您的应用程序,因为命令行参数也可能对非管理员用户可见(取决于操作系统)。如果允许其他用户使用进程列表(例如ps,Taskmanager,ProcessManager),那么参数可能会出现在那里。

答案 3 :(得分:1)

同意马丁。将密码存储在环境变量中是保护它们免受窥探的最佳方法。

这个方法已经成为Ruby on Rails应用程序的标准做法,您可以在下面的链接中看到:

http://richonrails.com/articles/environment-variables-in-ruby-on-rails