3

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

一切都很好,但是现在您发现(或者像我一样给您一个新要求)您必须将此应用程序放在不同的服务器中,并且由于安全性和/或合规性,您不能在配置文件中拥有这些凭据考虑因素。

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

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

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

4

3 回答 3

1

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

查看Java Cryptography Architecture - Password Based Encryption。这个概念相当简单,您在(反)序列化文件之前使用从用户密码派生的密钥加密/解密 XML 流。

我只是猜测您的安全/合规考虑需要什么,但肯定有一些事情需要考虑:

  1. 需要强密码
  2. 尽量减少将敏感材料解密的时间。
  3. 在运行时,小心处理敏感材料——不要将其暴露在全局对象中;相反,尽量减少敏感材料的范围。例如,将所有解密的数据作为私有数据封装在一个类中。
  4. 想想你应该如何处理配置文件密码丢失的情况。也许它很简单,您可以创建一个新的配置文件?
  5. 需要强密码和用户密钥文件才能访问配置文件。这将让用户安全地存储密钥文件;如果其中任何一条信息被意外暴露,如果没有两者,它仍然是无用的。

虽然这可能有点矫枉过正,但我​​强烈建议您看看Bruce Schneier 的Applied Cryptography。它提供了对加密领域的一个很好的了解。

于 2010-05-12T00:59:15.893 回答
1

如果您的独立应用程序在大型企业或企业中运行,他们很可能正在使用轻量级目录访问协议或 LDAP 作为密码。

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

于 2010-05-16T20:41:00.097 回答
0

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

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

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

于 2010-04-20T22:26:12.810 回答