Configuration 如何处理独立应用程序的密码或凭据?

Configuration 如何处理独立应用程序的密码或凭据?,configuration,password-protection,Configuration,Password Protection,假设您有一个独立应用程序(在我的例子中是一个Java应用程序),并且该应用程序有一个配置文件(在我的例子中是一个XML文件),您可以在其中存储需要连接的一组数据库的凭据(用户和密码) 一切都很好,但现在您发现(或者您的应用程序像我一样被赋予了新的要求),您必须将此应用程序放在不同的服务器上,并且由于安全和/或法规遵从性方面的考虑,无法在配置文件中拥有这些凭据。 我正在考虑使用托管在应用程序服务器(WAS服务器)中的数据源,但我认为这可能会导致性能低下,可能这不是最好的方法,因为我是从独立应用程序

假设您有一个独立应用程序(在我的例子中是一个Java应用程序),并且该应用程序有一个配置文件(在我的例子中是一个XML文件),您可以在其中存储需要连接的一组数据库的凭据(用户和密码)

一切都很好,但现在您发现(或者您的应用程序像我一样被赋予了新的要求),您必须将此应用程序放在不同的服务器上,并且由于安全和/或法规遵从性方面的考虑,无法在配置文件中拥有这些凭据。

我正在考虑使用托管在应用程序服务器(WAS服务器)中的数据源,但我认为这可能会导致性能低下,可能这不是最好的方法,因为我是从独立应用程序连接的

我也在考虑使用某种加密,但我希望事情尽可能简单

你会怎么处理这个案子?您将把这些凭证放在哪里,或者保护它们不被泄露?或者在这种情况下,您将如何连接到数据库

我正在考虑使用托管在应用程序服务器(WAS服务器)中的数据源,但我认为这可能会导致性能低下,而且这可能不是最好的方法,因为我是从独立的应用程序连接的

相反,这些数据源通常是连接池数据源,它应该只是提高数据库连接性能,因为连接是每个saldo最昂贵的任务

您是否对其进行了测试/基准测试

我也在考虑使用一些 有点加密,但我想 让事情尽可能简单

请看下面的图片。这个概念相当简单,在对文件进行(反)序列化之前,使用从用户密码派生的密钥对XML流进行加密/解密

我只是在猜测您的安全性/法规遵从性需要考虑什么,但肯定需要考虑一些事情:

  • 需要
  • 尽量减少解密敏感材料的时间
  • 在运行时,小心处理敏感材料-不要将其暴露在全局对象中;相反,尽量缩小敏感材料的范围。例如,将所有解密数据封装为单个类中的私有数据
  • 考虑如何处理配置文件密码丢失的情况。也许它的简单之处在于您可以创建一个新的配置文件
  • 需要强密码和用户密钥文件才能访问配置文件。这将留给用户安全地存储密钥文件;如果其中一条信息被意外泄露,如果没有这两条信息,它仍然是无用的
    虽然这可能有些过分,但我强烈建议大家看看布鲁斯·施奈尔(Bruce Schneier)的作品。它为加密领域提供了一个很好的视角。

    如果您的独立应用程序在大型企业或企业中运行,那么他们很可能使用或LDAP作为密码


    您可能想考虑使用LDAP,或者在您的应用程序中为企业LDAP提供钩子。

    我还没有测试或基准测试,但我的观点是,除了使用数据源之外,我还想知道这种情况下还有什么其他方法可以考虑。实际上,我现在的实现已经使用了数据源,正如你刚才提到的,这是一个不错的方法,但也许还有其他方法值得考虑。