我希望使用 Java 连接到 Mysql 数据库而不向任何可能反编译我的代码的人透露密码?我可以有效地连接到数据库,但我的方式会在代码中公开显示我的密码:(并且只希望对如何隐藏密码做出回应。谢谢,Josh Aurora
2 回答
OAuth 允许客户端连接,而无需在客户端上存储凭据(在移动设备上广泛使用或用于识别 tweitte 应用程序)。它还允许从恶意客户端删除访问权限。但我怀疑 mysql 是否直接支持这个。所以你必须用某种服务层来包装你的数据库。OAuth 的可用映射之一:
http://code.google.com/p/oauth-signpost/
(IIRC,Qipe 使用)
假设将要访问的数据库将在您的机器上,我会想到两件事:
设置一个小型安全 REST 服务(如图所示),该服务将根据具有特定凭据的特定请求将密码传递到您的数据库。但是,如果您的应用程序位于某些公司防火墙之后,这可能是一个问题,因为您可能需要添加防火墙例外,这并不是所有管理员都热衷的事情。
不过需要注意的是,这些方法中的任何一种都可以及时被打破。这基本上是所有安全相关软件的规则。
如果由我决定,我会使用第一种方法来解决这个问题,并确保经常更改访问服务的凭据。
但是,用作客户端解决方案一部分的数据库包含非常敏感的数据,这些数据符合客户的利益,不能被篡改,因此客户很可能不会乱用它,只要系统能够满足他/她就会很高兴作品。
另一方面,如果数据库没有部署到您的一台机器上,那么您就无法真正做太多事情。您可以建议将服务器存储在只能通过 Intranet 访问的远程计算机上,但除此之外,我认为您对此无能为力。