私のJavaFXデスクトップアプリケーションは現在、bluehost上でホストされているMySQLデータベースにリモートで接続されています。 JavaFXアプリケーションで「SELECT」、「UPDATE」、「DELETE」を照会し、正常に完了しました。
私の質問はです。このアプローチは安全ですか?
JDBCドライバーを使用して接続しています。
DriverManager.getConnection("jdbc:mysql://mysql_ip_on_bluehost_here:3306/my_db", dbUser, dbPass);
いいえ、安全ではありません。 sysadminの観点から:資格情報とすべてのデータの両方が暗号化されずに送信されます。
MySQLはトランスポート層セキュリティ(SSL/TLS)をサポートしていますが、デフォルトでは有効になっておらず、 サーバーサポートの設定 の後に クライアントに使用するように明示的に指示する それも。
通常、これは次のような結果になります。
DriverManager.getConnection("jdbc:mysql://mysql_ip_on_bluehost_here:3306/my_db?useSSL=true", dbUser, dbPass)
別の方法は、アプリケーション層ではなくIP層にセキュリティを提供するIPSecのようなものです。
DBAの観点から、@ M_dkは、直接SQL UPDATEおよびDELETEステートメントを許可することは望ましくなく、ストアドプロシージャはセキュリティの観点からはるかに優れているという良い点を示しました。
UseSSLをどこにも指定していない場合は、それ自体で、いいえ。今のところ、他のすべてのトランザクションと同様に、ログインの詳細は平文で送信されます。 MySQL Webサイトの SSLを使用した安全な接続 を参照してください。