I have a Database Connection class which accesses the database credentials from a property file located at src/main/resources.
**DBconfig.properties** (property file)
DB.url=jdbc:mysql://localhost:3306/studentdb
DB.username=root
DB.password=root
Мой класс Connection похож на этот (расположенный в src/main/java),
открытый класс DBconnect {
private static String resources="DBconfig.properties";
private static Connection con = null;
private static String url = null;
private static String username = null;
private static String password = null;
public static void main(String[] args) {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
Properties prop = new Properties();
try {
InputStream rs = loader.getResourceAsStream(resources);
prop.load(rs);
url = prop.getProperty("DB.url");
username = prop.getProperty("DB.username");
password = prop.getProperty("DB.password");
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(url,username,password);
System.out.println("Database is Connected");
} catch (Exception e) {
System.out.println("Database is Not Connected");
e.printStackTrace();
}
}
}
Моя проблема заключается в том, что мои учетные данные доступны в файле свойств в ясном тексте, правильно ли я сохраняю свои учетные данные? безопасен ли он так, как я его уже реализовал? есть ли что-то, что мне нужно сделать, чтобы улучшить его? Это приложение Spring MVC, использующее сервер приложений weblogic. Спасибо
Вы можете использовать Jasypt, который позволит вам хранить их в файле свойств, но в зашифрованном виде.
Хотя они хранятся в зашифрованном виде, вы, вероятно, сможете получить к ним доступ, если испортите память (поскольку в какой-то момент строка подключения будет храниться в ОЗУ). Более безопасный способ защиты себя - использовать роли, процедуры и представления в базе данных.
Например: не позволяйте этому пользователю создавать новые таблицы, выбирать, что он хочет, разрешить ему получать только какое-то представление, если вы хотите проверить учетные данные для входа в систему, используя процедуру...
И, наконец, самый безопасный вариант - использовать сервер и проходить через сервер для всего.