Java - 如何存储应用程序中使用的密码?
我正在开发一个从数据库读取一些数据的应用程序。与数据库的连接是通过标准登录/密码机制执行的。
问题是:如何存储数据库密码?如果我将其存储为类成员,则可以通过反编译操作轻松检索它。
我认为混淆并不能解决问题,因为在混淆代码中也可以很容易地找到字符串密码。
有人有建议吗?
我正在开发一个从数据库读取一些数据的应用程序。与数据库的连接是通过标准登录/密码机制执行的。
问题是:如何存储数据库密码?如果我将其存储为类成员,则可以通过反编译操作轻松检索它。
我认为混淆并不能解决问题,因为在混淆代码中也可以很容易地找到字符串密码。
有人有建议吗?
切勿将密码硬编码到代码中。最近在25大最危险的编程错误中提到了这一点。
将秘密帐户和密码硬编码到您的软件中非常方便 - 对于熟练的逆向工程师来说。如果密码在所有软件中都相同,那么当密码不可避免地被知道时,每个客户都会变得容易受到攻击。而且因为它是硬编码的,所以修复起来非常痛苦。
应将配置信息(包括密码)存储在应用程序启动时读取的单独文件中。这是防止密码因反编译而泄漏的唯一真正方法(切勿将其编译为二进制文件)。
看到这个精彩的答案更详细的解释:由威廉布伦德尔
对于您不希望涉及许多其他安全措施的小型简单应用程序,这可能应该是一个配置选项。部署应用程序时,它可以读取指定数据库连接属性的配置文件。这意味着应用程序本身不知道密码,但您需要访问服务器才能找到密码。