Мое настольное приложение JavaFX в настоящее время удаленно подключено к размещенной базе данных MySQL на bluehost. Я запрашиваю «ВЫБРАТЬ», «ОБНОВИТЬ», «УДАЛИТЬ» в своем приложении JavaFX и успешно закончил.
У меня такой вопрос. Безопасен ли этот подход?
Я использую драйвер JDBC для подключения через него.
DriverManager.getConnection("jdbc:mysql://mysql_ip_on_bluehost_here:3306/my_db", dbUser, dbPass);
Нет, это небезопасно. С точки зрения системного администратора: как ваши учетные данные, так и все данные будут передаваться в незашифрованном виде.
Хотя MySQL действительно поддерживает безопасность транспортного уровня (SSL / TLS), он не включен по умолчанию и после настройка поддержки сервера тебе нужно явно указать клиенту использовать это тоже.
Обычно это приводит к чему-то вроде:
DriverManager.getConnection("jdbc:mysql://mysql_ip_on_bluehost_here:3306/my_db?useSSL=true", dbUser, dbPass)
Альтернативой может быть что-то вроде IPSec, которое обеспечивает безопасность на уровне IP, а не на уровне приложений.
С точки зрения администратора базы данных @M_dk хорошо замечает, что разрешение прямых SQL-операторов UPDATE и DELETE нежелательно, а хранимые процедуры намного лучше с точки зрения безопасности.
Если вы нигде не указали useSSL, то самостоятельно, нет. На данный момент данные для входа будут отправлены в открытом виде, как и все другие транзакции. Посмотри пожалуйста Безопасное подключение с использованием SSL с веб-сайта MySQL.