Подтвердить что ты не робот

Как подключиться к базе данных, для которой требуется пароль без раскрытия пароля?

Я создаю приложение, и мне нужно подключиться к базе данных. База данных требует входа/пароля, поэтому приложение может выполнять операции, такие как select и insert.

В приложении мне нужно подключиться к базе данных, используя логин и пароль, поэтому приложение может выполнять некоторые задачи в базе данных. Мой вопрос: как я могу хранить и использовать пароль для подключения к базе данных без раскрытия пароля?

Я не могу просто использовать хэш или шифрование для хранения пароля, потому что база данных должна распознавать пароль (я думаю, что большинство или все базы данных должны получать пароль как обычный текст).

.

.

Примечание. Соединение выполняется приложением. Никакой пользовательский ввод для подключения.

(Edit) Дополнительная информация о приложении: это веб-приложение, использующее сервлеты /jsp. База данных находится на том же сервере приложения. Пользователь для приложения является пользователем по умолчанию без полных полномочий администратора, но он может вставлять/удалять строки и делать большинство вещей, которые связаны с запросами и модификацией данных в таблицах.

4b9b3361

Ответ 1

Обычно это делается для внешнего использования имени пользователя/пароля в файле свойства/конфигурации, который читается во время выполнения (независимо от того, вы используете собственный источник данных JDBC/JNDI/CDI/J2EE/etc).

Файл защищен с помощью системных администраторов защитой O/S.

O/S имеет лучшие инструменты для защиты, чем код приложения.

Ответ 2

Для этого вы должны использовать файл конфигурации. используйте spring с JDBC, чтобы сделать вашу жизнь проще!

http://www.youtube.com/watch?v=f-k823MZ02Q

Ознакомьтесь с приведенным выше замечательным руководством по структуре spring и с помощью JDBC. Посмотрите все его учебники JDBC и spring. BTW, он рассказывает, как хранить пароли в конфигурационных файлах и проводке beans и т.д. Надеюсь, это поможет.

Ответ 3

Вы можете использовать jasypt для шифрования. И сохраните имя пользователя и пароль в файле datasource.properties.

public Connection getConnection() throws IOException{
    try{
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword("jasypt");

        Properties props = new EncryptableProperties(encryptor);
        props.load( this.getClass().getResourceAsStream("datasource.properties") );

        String driver = props.getProperty("datasource.driver");
        String url = props.getProperty("datasource.url");        
        String userName = props.getProperty("datasource.userName");          
        String password = props.getProperty("datasource.password");

        Class.forName(driver);
        Connection conn = DriverManager.getConnection(url, userName, password);
        conn.setAutoCommit(false);

        return conn;
    } catch(ClassNotFoundException e) {
        e.printStackTrace();
        return null;

    } catch(SQLException e) {
        e.printStackTrace();
        return null;
    }
}

Ответ 4

Если это веб-приложение, разверните его на сервере приложений Java EE и подключитесь с использованием ресурса JNDI. Только администратор, который настроил ресурс данных JNDI, должен знать о учетных данных, необходимых для подключения. Пользователи и разработчики даже не должны их знать; просто имя поиска JNDI.

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

Вам также рекомендуется создавать отдельные учетные данные только для этого приложения и предоставлять ему минимальный доступ и разрешения, необходимые для выполнения его задач. Не должно быть знаний системных таблиц или других ресурсов за пределами области приложения. Если разрешение DELETE не требуется, не предоставляйте его. Если доступ должен быть только для чтения, это то, что вы должны предоставить для этого удостоверения.