Как скрыть пароль базы данных?

Я использую JPA2.0 (Eclipselink) для взаимодействия с БД, и у меня есть persistence.xml файл, который имеет некоторую конфигурацию БД. Я хочу скрыть пароль, используемый для доступа к БД. Я использую Eclipse IDE. Следующие теги конфигурации используются в persistence.xml файл.

<property name="javax.persistence.jdbc.user" value="app"/>
<property name="javax.persistence.jdbc.password" value="password"/>

Я не хочу упоминать пароль здесь, в xml, Как мне это сделать?

Примечание. Мое приложение состоит из Swing и встроенной БД Apache Derby.

2 ответа

Решение

Вы можете позволить серверу хранить пароль, а затем вы можете восстановить его, используя JNDI,

Также было бы возможно зашифровать пароль и расшифровать в клиенте. Хотя это может быть восприимчиво к атакам по словарю или даже полностью изменить процесс путем декомпиляции вашей программы.

Обычно в этом сценарии вы сохраняете хеш в файле XML, а в бэкэнде проверяете, совпадают ли хэши.

Вы должны быть в состоянии сделать что-то вроде следующего псевдокода:

String password = property.getParam(password);  
String user = property.getParam(user);  

function validateHash(String unhashedPassword, String unhashedUser)  
{  
    String passHash = generateMD5(unhashedPassword);  
    String userHash = generateMD5(unhashedUser);  

    if(!password.equals(passHash) && !user.equals(userHash)  
    {  
       throw new SecurityException("Oh noez hackstar");  
    }  
}  

Дискуссия о том, какой алгоритм хеширования использовать, является длительной, в MD5 нет ничего плохого, если вы не пытаетесь защитить ядерные коды запуска.

Другие вопросы по тегам