我的 JavaFX 桌面应用程序目前已远程连接到 bluehost 上托管的 MySQL 数据库。我在 JavaFX 应用程序上查询“SELECT”、“UPDATE”、“DELETE”,并成功完成。
我的问题是。这种方法安全吗?
我正在使用 JDBC 驱动程序通过它进行连接。
DriverManager.getConnection("jdbc:mysql://mysql_ip_on_bluehost_here:3306/my_db", dbUser, dbPass);
答案1
不,这并不安全。从系统管理员的角度来看:您的凭据以及所有数据都将以未加密的形式传输。
尽管 MySQL 支持传输层安全性 (SSL/TLS),但默认情况下不启用,并且在设置服务器支持你需要明确指示客户使用它也是如此。
通常,这会导致类似这样的结果:
DriverManager.getConnection("jdbc:mysql://mysql_ip_on_bluehost_here:3306/my_db?useSSL=true", dbUser, dbPass)
另一种替代方案是像 IPSec 这样的技术,它在 IP 层而不是应用层提供安全性。
从 DBA 的角度来看,@M_dk 提出了一个很好的观点,即允许直接 SQL UPDATE 和 DELETE 语句是不可取的,从安全角度来看,存储过程要好得多。
答案2
如果您没有在任何地方指定 useSSL,则就其本身而言,不需要。目前,登录详细信息将以明文形式发送,所有其他交易也是如此。请参阅使用 SSL 进行安全连接来自 MySQL 网站。