2012-01-19 2 views
2

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

Проблема заключается в том, что я не хочу давать ясный пользователь, пароль, URL-адрес команде веб-сервера , Просто зашифрованный пароль и весна расшифрована перед его использованием.

Есть что-то вроде этого уже? Я знаю, что могу что-то закодировать, но это уже сделано?

Благодаря

+0

Уже ответил в http://security.stackexchange.com/questions/1711/storing-private-asymmetric-key-in-application-binary/? – AngerClown

+0

@AngerClown У меня 3/4-й, и я не заметил, что вопрос отразился, но я думаю, что ответы могут быть удивительно похожими. –

+0

Hi Fabio & welcome. Будет ли зашифрованный пароль иметь меньше доступа к базе данных, чем простой пароль? Если это не так, то ваш зашифрованный пароль не обеспечивает никакой безопасности, это в основном новый, менее читаемый, простой пароль. –

ответ

0

Эта проблема и решение ему объясняется здесь .. (link)

db.Properties.

#driverClassName=oracle.jdbc.driver.OracleDriver 
#url=jdbc:oracle:thin:@localhost:1521:XE 
#username=ITEM_INVENTORY 
driverClassName=com.mysql.jdbc.Driver 
url=jdbc:mysql://localhost:3306/ITEM_INVENTORY?zeroDateTimeBehavior=convertToNull 

username=root 
  1. Шифровать db.Properties

    ##password=cGFzc3dvcmQ= 
        password=cm9vdA== 
    

Конфигурация пружинной фасоли для источника данных будет выглядеть следующим образом (здесь вы можете использовать только части пароль)

  1. spring-beans.xml

    <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> 
        <property name="driverClassName" value="db#[driverClassName]" /> 
        <property name="url" value="db#[url]" /> 
        <property name="username" value="db#[username]" /> 
        <property name="password" value="encryptedDb#[password]" /> 
    </bean> 
    <bean id="dbPropertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
        <list> 
         <value>classpath:db.properties</value> 
        </list> 
        </property> 
        <property name="placeholderPrefix" value="db#[" /> 
        <property name="placeholderSuffix" value="]" /> 
        </bean> 
        <bean id="encryptedDbPropertyPlaceholder" class="com.inventory.api.util.DecryptPropertyConfigurer"> 
        <property name="locations"> 
         <list> 
          <value>classpath:encryped_db.properties</value> 
         </list> 
        </property> 
        <property name="placeholderPrefix" value="encryptedDb#[" /> 
        <property name="placeholderSuffix" value="]" /&gt; 
        </bean> 
    

И так далее .. пожалуйста, обратитесь данную ссылку для получения дополнительной информации ..

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа [здесь] (http: // meta .stackexchange.com/a/8259) и укажите ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. Добавление такой же ссылки часто может рассматриваться как спам. – bummi

5

Используя объект org.jasypt.properties.EncryptableProperties, приложение сможет правильно прочитать и использовать а .properties файл, как это:

datasource.driver=com.mysql.jdbc.Driver 
datasource.url=jdbc:mysql://localhost/reportsdb 
datasource.username=reportsUser 
datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm) 

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

Дополнительная информация:

http://www.jasypt.org/encrypting-configuration.html

Смежные вопросы