我们有一个在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
资源然后查询该资源以获取用户名/密码?
答案 0 :(得分:2)
一个相当简单的解决方案就是通过以下方式将应用凭据外部化:
这样开发人员(或任何有权访问源代码的人)都不会知道密码。如果您想要更安全的方法,还需要对密码进行编码,而不是将其存储为明文。这显然需要额外的努力,所以你需要决定是否值得做。
答案 1 :(得分:1)
我建议这个案例:
如果凭证来自数据库,我建议你可以使用JNDI别名,并在应用服务器上配置JNDI。
如果凭据来自其他用途,则需要在属性文件中进行加密和设置:解析凭据的服务器需要具有算法。
在任何其他情况下,用户需要实时输入凭据。