Как скрыть пароль базы данных? - PullRequest
3 голосов
/ 27 февраля 2012

Я использую 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 Embedded DB.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

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

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

0 голосов
/ 27 февраля 2012

Что обычно происходит в этом сценарии, так это то, что вы сохраняете хеш в файле 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 нет ничего плохого, покаВы не пытаетесь защитить ядерные коды запуска.

...