我正在寻找一种方式来打开JDBC连接,而不用纯文本指定我的数据库登录名和密码,因为应用程序将被分发并且任何Java反编译器会揭示它们,允许用户轻松访问数据库。Java - 在没有在代码中指定用户名和密码的情况下连接到MySQL
有什么办法来加密他们,或将他们存储在别的地方?
我正在寻找一种方式来打开JDBC连接,而不用纯文本指定我的数据库登录名和密码,因为应用程序将被分发并且任何Java反编译器会揭示它们,允许用户轻松访问数据库。Java - 在没有在代码中指定用户名和密码的情况下连接到MySQL
有什么办法来加密他们,或将他们存储在别的地方?
看起来你想让Android应用程序直接与数据库对话?不要这样做。这是一个重大的安全漏洞。无论您如何对凭证进行加密,都必须在程序执行期间在某处显示纯文本,并且任何使用调试器的人都可以看到。正确的方法是在您的Web服务上使用API并从客户端调用该API。所有数据库事务都应该发生在受信任的Intranet中。
你为什么要这样做?一般来说,应用程序的商业方面会拥有此信息并连接到MySQL。在那里,用户无权访问任何代码。然后,您创建一个实际上可供公众访问的端点。在那里你可以担心将用户名和密码传递给业务逻辑,而这又可以直接访问你的数据库。
基本上,不要在服务器端的任何地方打开jdbc连接。它是一项安全措施。
与此相关,我建议使用通过加密(TLS/SSL)连接发送到Web服务器的JSON消息,然后Web服务器处理请求并向移动设备发送回应(“成功!”,“John Johnson” ,“42”等)。 – Izmaki