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

时间:2010-04-20 18:03:40

标签: configuration password-protection

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

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

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

我还在考虑使用某种加密,但我希望尽可能简单。

你会如何处理这个案子?你会把这些凭据放在哪里或保护它们免受损害?或者在这种情况下你将如何连接到数据库?

3 个答案:

答案 0 :(得分:1)

  

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

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

我只是在考虑您的安全/合规性考虑因素,但绝对需要考虑的一些事项:

  1. 需要strong passwords
  2. 尽量减少您对敏感材料进行解密的时间。
  3. 在运行时,小心处理敏感材料 - 不要将其暴露在全局对象中;相反,尽量减少敏感材料的范围。例如,将所有解密数据封装为单个类中的私有数据。
  4. 考虑如何处理配置文件的密码丢失的情况。也许它很简单,因为你可以创建一个新的配置文件?
  5. 同时需要强密码和用户密钥文件才能访问配置文件。这将使用户能够安全地存储密钥文件;如果任何一条信息被意外暴露,如果没有两者,它仍然是无用的。
  6. 虽然这可能有些过分,但我强烈建议您看看Bruce Schneier的Applied Cryptography。它提供了对加密领域的深刻了解。

答案 1 :(得分:1)

如果您的独立应用程序在大型企业或企业中运行,则可能是他们使用Lightweight Directory Access Protocol或LDAP作为其密码。

您可能需要考虑使用LDAP,或在应用程序中为公司LDAP提供挂钩。

答案 2 :(得分:0)

  

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

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

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