Как скрыть строку подключения MySQL - имя пользователя и пароль на GitHub (Java)

0

Я пытался найти решение дилеммы, которую я сейчас имею. Поэтому я делаю небольшой проект, создающий простую систему POS, и я использую базу данных Oracle MySQL для хранения информации, такой как пароли пользователей, имена элементов, цены и т.д. Я использую Amazon AWS для хоста. Когда я подключаюсь к нему в своем коде, я использую

Connection conn=DriverManager.getConnection("amazon host url","some username","somepassword");

Некоторое имя пользователя, somepassword и URL-адрес хоста amazon - это реальные значения в моем коде, я просто использую это по очевидной причине.

Теперь, если бы я загрузил свой код в github, то мое соединение с MySQL стало бы общедоступным, и люди могли бы подключиться к нему. Как я могу скрыть эту информацию, но все же загружать свой код на github? Я смотрю онлайн, но я могу видеть только решения в отношении PHP, если кто-то может помочь мне справиться с этой проблемой, это было бы здорово.

Теги:
amazon-web-services
github

2 ответа

1
Лучший ответ

Файл свойств

Его можно использовать для получения значения свойства на основе ключа свойства. Класс Properties предоставляет методы для получения данных из файла свойств и хранения данных в файле свойств. Более того, его можно использовать для получения свойств системы.

Преимущество файла свойств

Перекомпиляция не требуется, если информация изменяется из файла свойств. Если какая-либо информация изменяется из файла свойств, вам не нужно перекомпилировать класс java. Он используется для хранения информации, которая должна быть изменена часто.

Чтобы получить информацию из файла свойств, создайте файл свойств Name как .dbconfig.properties

 #DB Properties
 db.driver="driverclassname"
 db.url=jdbc:mysql://localhost:3306/YOURDBNAME
 db.username=USERNAME
 db.password=PASSWORD

.gitignore файл будет игнорировать ваши dbconfig.properties, нажав на публичный репозиторий для дополнительной справки о gitinore ref: https://git-scm.com/docs/gitignore

.gitignore file

 /resources/dbconfig.propreties/

класс java для чтения данных из файла свойств в java файле

 private ResourceBundle reader = null;
 try{ 
     reader = ResourceBundle.getBundle("dbconfig.properties");
     Connection conn=DriverManager.getConnection(reader.getString("db.url"),reader.getString("db.username"),reader.getString("db.password"));
 }catch(Exception e){
}
  • 0
    Отлично, спасибо, я попробую.
  • 0
    OP был бы рад получить это решение, но вы не добавили ни единого объяснения, например, почему он предполагает использовать, и каково свойство, как он может использовать повторно и т. Д. Простой обмен кодом с OP может или не может работать для ОП.
Показать ещё 11 комментариев
0

Жесткое кодирование username и password не является хорошей практикой. Вот почему.

  1. Когда вы жестко указываете пароль, вы делаете приложение жестко сопряженным с конкретной системой. Что делать, если вы хотите использовать такое же приложение еще где? Вы не собираетесь изменять имя пользователя и пароль и компилировать весь код и развертывать. право?

  2. Ваша безопасность стала общедоступной, и кто-то видит, что такое учетные данные. Тогда нет смысла иметь это.

  3. Повторите работу, каждый раз, когда вам нужно проверить все файлы, в которых вы указали имя пользователя/пароль, и обновить что-то еще.

Какое решение?

Теперь это зависит,

  1. Если ваше приложение является автономным, наиболее предпочтительным решением является запрос на имя пользователя/пароль.
  2. Если это webapp, вы можете использовать файл свойств.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню