Я работаю над простой java-программой, которая принимает пользовательский ввод, затем анализирует данные и загружает их в базу данных sql для хранения в Интернете.
В моем коде JDBC у меня есть следующее: (Маленький пример)
public class JDBCExample {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/";
// Database credentials
static final String USER = "username";
static final String PASS = "password";
Мне интересно, насколько безопасно иметь мое имя пользователя и пароль, которые просто открыто доступны в текстовом виде в моем коде программирования после того, как я конвертирую его в файл jar. Легко ли перепроектировать приложение таким образом и показать код?
Вы можете сохранить имя пользователя и пароль в отдельном файле свойств, чтобы вы могли в любое время изменить его, не перекомпилируя коды.
По вашему вопросу, независимо от того, что ваш код может читать в ваших кодах/файлах, скорее всего, пользователи также могут. См. Это как ссылку.
Невероятно легко, да. javap -c JDBCExample.class
сделает это в одно мгновение.
Как правило, это делается путем разделения клиентского приложения, которое вы распространяете публично, с серверного приложения, которое выполняется на доверенном сервере. Клиентское приложение, которое вы распространяете, напрямую не обращается к базе данных; вместо этого он обращается к серверной программе, которая публикует API (часто RESTful API через HTTP), через который клиент может делать запросы. Эта доверенная серверная программа - это то, что напрямую связано с базой данных.
И даже тогда, лучше всего не сложно -c одеть свои учетные данные в серверный код. Вместо этого попросите службу прочитать эти учетные данные из файла, который вы держите отдельно от базы кода (например, не проверяйте этот файл в своем исходном элементе управления).
Я использую шифрование и расшифровку в своем коде. используйте класс javax.crypto для шифрования вашего пароля, а внутри вашего класса используйте расшифровку, чтобы расшифровать и отправить пароль.
Это работает, только если вы поместите файл класса для расшифровки, а не в.java файл.
Пример для шифрования связи.