将密码移出战争

时间:2015-08-19 20:43:19

标签: java tomcat java-ee war

我们有一个在tomcat上运行的Web应用程序,它在一些.java文件中包含硬编码密码。我们的安全人员不太高兴,他们要求我们从外部移动文件。

我的假设是,最好的方法是将属性文件放在tomcat /conf目录中?或者可能在其中一个配置文件中设置某种JDNI属性?

是否应该采用这种普遍接受的方式?

我看到这篇文章对非tomcat有一些答案:What is the best way to keep passwords configurable, without having them too easily available to the casual human reader?

为了更具体,我们有应用程序管理的数据库连接,我想获取凭据。我假设我需要一些如何将它们放入JNDI资源然后查询该资源以获取用户名/密码?

2 个答案:

答案 0 :(得分:2)

一个相当简单的解决方案就是通过以下方式将应用凭据外部化:

  • 在appserver config
  • 中创建JNDI条目
  • 限制对此文件的访问(只有那些正在进行重新访问的人才有权访问它)
  • 让应用程序使用JNDI资源来获取连接

这样开发人员(或任何有权访问源代码的人)都不会知道密码。如果您想要更安全的方法,还需要对密码进行编码,而不是将其存储为明文。这显然需要额外的努力,所以你需要决定是否值得做。

答案 1 :(得分:1)

我建议这个案例:

  • 如果凭证来自数据库,我建议你可以使用JNDI别名,并在应用服务器上配置JNDI。

  • 如果凭据来自其他用途,则需要在属性文件中进行加密和设置:解析凭据的服务器需要具有算法。

  • 在任何其他情况下,用户需要实时输入凭据。