Если я правильно понимаю, ваша среда - это веб-приложение на основе Hibernate Framework, развернутое в tomcat.
В настоящее время вы должны настроить JDBC passsword i) либо в файле конфигурации Hibernate (обычно это файл hibernate.cfg.xml).) в свойстве: -
hibernate.connection.password
ii) или в файле конфигурации tomcat: - *
<Resource name="jdbc/myoracle" ......password="tiger".../>
Теперь вы не хотите хранить открытый пароль в любомперечисленных выше файлов.
В коде вашего приложения вы должны выполнить: -
Line1: org.hibernate.cfs.Condiguration configuration=new Configraution().configure(<hibernate configuration path>);
then,Line2: configuration.buildSessionFactory().openSession() to create a hibernate session which has underlying JDBC connection.
1) Один из основных способов может быть в основном: - Вы можете зашифровать свой пароль с помощью любого jlog security alogirthmиспользуя любой провайдер JCE. Зашифрованный пароль хранится в любом из указанных выше файлов конфигурации (в спящем режиме или tomcat согласно среде вашего проекта).
, а затем между Line1 и Line2 вы можете использовать логику дешифрования, например: -
Line1: org.hibernate.cfs.Condiguration configuration=new Configraution().configure(<hibernate configuration path>);
String encrpytedPassword=
configuration.getProperty("hibernate.connection.password"); \\will return encrypted password
//decryption logic to decypt the encrypted password:-
String decryptedPwd=decrypt(encrpytedPassword);
configuration.setProperty("hibernate.connection.password",decryptedPwd);
then,Line2: configuration.buildSessionFactory().openSession()
Вы можете сделать шифрование и дешифрование настолько сложными, насколько вам необходимо, например, для шифрования обратной строки-пароля-пароля.Вы можете использовать любой JCE API: - jasrypt, надувной замок.Вам нужно немного разбираться в Java-криптографии. Пожалуйста, обратитесь к: -
http://download.oracle.com/javase/1.4.2/docs/guide/security/CryptoSpec.html
2) Если вас беспокоит передача пароля в JDBC в открытом видепротокол соединения, тогда вы можете использовать поддержку SSL от поставщика БД для безопасного соединения.Например, чтобы иметь соединение SSL JDBC с вашим сервером БД.Для этого обратитесь к ресурсам вашего сервера БД.
РЕДАКТИРОВАНИЕ ДЛЯ УТОЧНЕНИЯ комментария keylM ПО КАК ШИФРОВАТЬ ПАРОЛЬ JDBC
Допустим, у вас есть пара закрытых и открытых ключей:= privare.key и public.cer.Вы можете зашифровать пароль JDBC с помощью закрытого ключа и сохранить зашифрованный пароль в файле конфигурации.Вы можете использовать OpenSSL для импорта открытого сертификата в файл jks (хранилище ключей java) и поместить его в свой JAVA_HOME \ jre \ lib \ security.
В логике расшифровки: -
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("keystore.jks"),<jks password>); //jks password can be hardoded
Certificate cert= ks.getCertificate(<certificate alias>);
//use certificate to decrypt the encrypted password
Итакв этом сценарии: - хакеру понадобятся 3 вещи для захвата пароля JDBC, что делает систему менее уязвимой: - i) зашифрованный пароль JDBC ii) хранилище JKS iii) пароль хранилища JKS
Вы можете задать вопросТеперь, как насчет того, чтобы JKS хранил пароль, будь то его ключ, пароль или пароль, в системе шифрования-дешифрования, по крайней мере, одна вещь должна быть очень безопасной;в противном случае это ставит под угрозу всю систему .... в приведенном выше сценарии каждому компьютеру разработчика может быть выдан сертификат, позволяющий ему импортировать в свой файл jks, защищенный тем же паролем хранилища jks ... каждый (разработчик) будет знать только пароль хранилища JKS, но никогдаПароль JDBC ...