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

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

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

我认为混淆不能解决问题,因为在混淆的代码中也可以很容易地找到字符串密码。

有人有建议吗?

切勿将密码硬编码到代码中。 这是最近在25个最危险的编程错误中提出的

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

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

有关更详细的解释,请参阅这个精彩的答案: William Brendel

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

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

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