我想知道您使用什么技术来存储应用程序的数据库凭据.我特别关注java webapps,但我认为没有必要将问题限制在那里.
需要考虑的事项:
你使用属性文件,xml配置,其他?
它是捆绑到您的应用程序中(即在jar文件中)还是单独存储在某个文件系统中?
密码是加密的吗?如果是这样,你使用什么加密方案?
由于您将问题留给平台,我将添加.NET应用程序的数据库凭据存储在web.config文件中.从版本2.0及更高版本开始,有一个特定的ConnectionStrings部分,允许更容易地编程访问连接字符串.
除了默认情况下让IIS自动阻止对web.config文件的直接请求外,您还可以使用IIS命令加密web.config文件的ConnectionString部分.此加密是特定于机器的,增加了它的优势,并且.NET运行时还会在您访问时动态解密连接字符串,因此您的应用程序中无需使用其他编码即可使用它.
使用Java,数据库连接池应该由容器传递到webapps.这是在WEB-INF/web.xml中作为资源声明的标准.这同样适用于邮件会话和其他外部资源,这些资源可能因安装而异.查找JNDI以获取更多信息)
这个很好的部分是应用程序不关心如何实际连接到外面的任何东西.它不会看到任何密码,因为容器本身将使用它们.
在tomcat中,这可以从conf/Catalina/localhost /,conf/server.xml中的上下文文件(例如)或者 - 优选仅用于dev环境,从webapps META-INF/context.xml配置.其他环境有自己的配置位置或应用程序.
密码加密实际上取决于容器.Tomcat以纯文本形式存储它们,但应用程序本身不会看到它.我不了解其他环境中的机制.