【发布时间】:2014-03-08 06:23:01
【问题描述】:
所以,我正在编写密码验证程序,从数据库中加载用户名和密码,但我不知道如何将数据库用户名和密码保留在代码之外。
String user = "username";//database username, not username to verify
String password = "password";//my password, not users password to check
String url = "jdbc:mysql://databaseurl:3306/table";
//i want this hidden somehow
我可以从文件中加载它,然后人们可以读取该文件。
显然,我不希望人们访问数据库并阅读秘密信息。我该怎么做呢?
编辑:我要问的是,如何保护 MY 数据库 凭据。其他人不应有权访问 数据库
例如,您可以反编译 jar 并阅读以上行,然后使用我的凭据访问我的数据库。 (使用jd-gui等程序)
【问题讨论】:
-
人们将如何访问您的代码?您是通过在线社区分享它还是仅仅通过他们使用该程序来分享它?
-
问题是你可以反编译jar,读取数据库用户名和密码,访问数据库并改变你想要的任何东西。我不想要这个。我将进行编辑以澄清。
-
我建议删除您的问题中关于“密码验证的东西”的误导部分,因为会弹出许多虚假答案。
-
最好的方法是在您的数据库托管服务器中设计一个层,允许您的应用程序安全地连接和检索数据。数据库登录信息将仅存储在服务器上,以防止被窥探。例如,可以设计一个 PHP 脚本来查询验证,然后 Java 应用程序只需通过网络发送用户的登录凭据,而不是将凭据发送到整个数据库。
-
我赞同 Vulcan 的说法。您还可以在服务器端添加一些代数检查,以验证登录凭据的来源。这方面的简单示例是使用 PHP(或其他)脚本将每个密码和用户名字符增加一个值 x,这样您在应用程序中使用的密码/用户名是实际密码/用户名的线性变化。