Java - How to store password used in application?
我正在开发一个从数据库中读取数据的应用程序。与数据库的连接是通过标准的登录/密码机制进行的。
问题是:如何存储数据库密码?如果将它存储为类成员,则可以通过反编译操作轻松地检索到它。
我认为混淆不能解决这个问题,因为字符串密码也很容易在混淆的代码中找到。
有人有建议吗?
不要将密码硬编码到代码中。这是最近在25个最危险的编程错误中提出的
Hard-coding a secret account and password into your software is extremely convenient -- for skilled reverse engineers. If the password is the same across all your software, then every customer becomes vulnerable when that password inevitably becomes known. And because it's hard-coded, it's a huge pain to fix.
号
您应该将配置信息(包括密码)存储在应用程序启动时读取的单独文件中。这是防止由于反编译而导致密码泄漏的唯一真正方法(不要首先将其编译成二进制文件)。
更详细的解释请看这个精彩的答案:威廉·布伦德尔
一些数据应该是可配置的。正如您刚才所说,它可能是一个
这确保了您的密码可以随时更改的可靠性。这不仅仅指密码。但您所使用的任何数据,这些数据将不时配置。
对于一个小而简单的应用程序,如果你不想涉及很多其他的安全措施,这可能是一个配置选项。部署应用程序时,它可以读取指定了数据库连接属性的配置文件。这意味着应用程序本身不知道密码,但您需要访问服务器才能找到密码。