Java - 如何存储应用程序中使用的密码?

时间:2011-11-19 15:42:44

标签: java passwords store

我正在开发一个从数据库读取一些数据的应用程序。 与db的连接是通过标准的登录/密码机制完成的。

问题是:如何存储db密码? 如果我将它存储为类成员,则可以通过反编译操作轻松检索它。

我认为混淆不能解决问题,因为在混淆代码中也可以轻松找到字符串密码。

有人有建议吗?

3 个答案:

答案 0 :(得分:21)

切勿将密码硬编码到代码中。这是最近在Top 25 Most Dangerous Programming Mistakes

中提出的
  

将秘密帐户和密码硬编码到您的软件中非常方便 - 适用于熟练的逆向工程师。如果所有软件的密码相同,那么当密码不可避免地被人知晓时,每个客户都会变得脆弱。而且由于它是硬编码的,因此修复起来非常痛苦。

您应该将配置信息(包括密码)存储在应用程序启动时读取的单独文件中。这是防止密码因反编译而泄漏的唯一真正方法(永远不要将其编译成二进制文件开头)。

有关详细说明,请参阅此精彩答案:By William Brendel

答案 1 :(得分:1)

对于一个小而简单的应用程序,您不希望涉及许多其他安全措施,这应该是一个配置选项。部署应用程序时,它可以读取指定数据库连接属性的配置文件。这意味着应用程序本身不知道密码,但您需要访问服务器才能找到密码。

答案 2 :(得分:1)

某些数据应该是可配置的。就在你刚才所说,它可能是usernamepassword或一些常见的datas;通常我们要做的是创建一个属性配置页面。我过去常常使用XML文件,让您的password/username保持某种encrypted格式。您可以轻松解析XML以检索连接密码。

这确保了您的密码可以随时更改的可靠性。这不仅指密码。但是您使用的任何数据都会不时进行配置。