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

2022-09-01 11:01:35

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

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

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

有人有建议吗?


答案 1

切勿将密码硬编码到代码中。最近在25大最危险的编程错误中提到了这一点。

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

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

看到这个精彩的答案更详细的解释:由威廉布伦德尔


答案 2

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


推荐