使用Java JDBC连接Google Cloud SQL数据库的方法

目前,我已经创建了一个简单的
Java应用程序,它以正常方式连接到我的Google Cloud SQL数据库:

try {
   Class.forName("com.mysql.jdbc.Driver");
   Connection con = DriverManager.getConnection("jdbc:mysql://-google-cloud-sql-ip:-port-/-projectname-","-user-","-password-");
   Statement st = con.createStatement();
}
catch (Exception ex) {
   ex.printStackTrace();
}

我唯一担心的是密码是以纯文本形式放在这里的.它不受任何保护.我知道可以用yGuard之类的东西来保护源代码.另外,我必须在Google Cloud中注册我的外部IP地址才能使用它.

因此,我想知道是否可以使用某种OAuth方法建立与Cloud SQL数据库的数据库连接.我更喜欢一种独立于计算机物理位置的连接方法,所以我可以连接任何我想要的地方(如果我有互联网连接).

有没有比上面提到的方法更好的方法,还是这是唯一的方法?如果是这样,请告诉我如何保护明文密码.

任何帮助深表感谢!

最佳答案 无法使用OAuth2验证与Cloud SQL的连接.您可以使用OAuth2经过身份验证的API调用来创建新的临时用户名/密码对(和/或授权IP),然后使用它进行连接,但这不会增加任何额外的安全性,只需在应用程序中嵌入凭据即可.

正如Razvan在他的评论中建议的那样,从Android应用程序直接连接到您的Cloud SQL实例几乎肯定是不安全的.此外,您将来不可能进行架构更改,因为您将无法控制升级的旧版本应用程序.

以下是一些替代方案:

>使用Firebase,专为从移动设备和JavaScript使用安全数据库而设计.
>开发自己的数据库支持的API,以满足您的移动应用程序的需求.您的应用程序要设置或检索的每个数据位都可以有一个单独的API调用,可以在进行实际数据库调用之前执行所需的任何授权或验证.您可以使用Google Cloud Endpoints为您完成大部分工作.

点赞