Правильный способ защиты учетных данных базы данных из файла свойств

0
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. Спасибо

  • 0
    Существует много уровней защиты этих учетных данных. Если этот файл не доступен для чтения кому-либо, кроме пользователя, запускающего приложение, то можно утверждать, что файл защищен. Но если файл доступен для чтения всему миру, то, возможно, вам нужно его зашифровать ... Но лучше всего, вероятно, удалить доступ к этому файлу любому, кроме пользователя приложения.
  • 0
    @ErnestKiwele да, но мне нужно развернуть это для клиента.
Теги:
spring
weblogic12c

1 ответ

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

Вы можете использовать Jasypt, который позволит вам хранить их в файле свойств, но в зашифрованном виде.

Хотя они хранятся в зашифрованном виде, вы, вероятно, сможете получить к ним доступ, если испортите память (поскольку в какой-то момент строка подключения будет храниться в ОЗУ). Более безопасный способ защиты себя - использовать роли, процедуры и представления в базе данных.

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

И, наконец, самый безопасный вариант - использовать сервер и проходить через сервер для всего.

  • 0
    Привет спасибо за отзыв. Как вы думаете, то, что я делаю сейчас, может привести к нарушению безопасности на этапе производства?
  • 0
    Нет проблем. Теоретически это может - реально, вероятно, нет. Все зависит от того, для чего создано ваше приложение, кто будет его использовать ... Если это просто приложение для какого-то местного бизнеса (местный магазин, кафе), то вы можете передать только с Jasypt, скорее всего. Если он предназначен для массового использования, вам следует рассмотреть возможность использования сервера и / или контроля доступа к данным из базы данных с помощью ролей.
Показать ещё 1 комментарий

Ещё вопросы

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