我正在开发一个从数据库读取一些数据的应用程序。 与db的连接是通过标准的登录/密码机制完成的。
问题是:如何存储db密码? 如果我将它存储为类成员,则可以通过反编译操作轻松检索它。
我认为混淆不能解决问题,因为在混淆代码中也可以轻松找到字符串密码。
有人有建议吗?
答案 0 :(得分:21)
切勿将密码硬编码到代码中。这是最近在Top 25 Most Dangerous Programming Mistakes
中提出的将秘密帐户和密码硬编码到您的软件中非常方便 - 适用于熟练的逆向工程师。如果所有软件的密码相同,那么当密码不可避免地被人知晓时,每个客户都会变得脆弱。而且由于它是硬编码的,因此修复起来非常痛苦。
您应该将配置信息(包括密码)存储在应用程序启动时读取的单独文件中。这是防止密码因反编译而泄漏的唯一真正方法(永远不要将其编译成二进制文件开头)。
有关详细说明,请参阅此精彩答案:By William Brendel
答案 1 :(得分:1)
对于一个小而简单的应用程序,您不希望涉及许多其他安全措施,这应该是一个配置选项。部署应用程序时,它可以读取指定数据库连接属性的配置文件。这意味着应用程序本身不知道密码,但您需要访问服务器才能找到密码。
答案 2 :(得分:1)
某些数据应该是可配置的。就在你刚才所说,它可能是username
和password
或一些常见的datas
;通常我们要做的是创建一个属性配置页面。我过去常常使用XML
文件,让您的password/username
保持某种encrypted
格式。您可以轻松解析XML
以检索连接密码。
这确保了您的密码可以随时更改的可靠性。这不仅指密码。但是您使用的任何数据都会不时进行配置。