приложение подключается к базе данных - PullRequest
1 голос
/ 11 октября 2011

Я работаю над приложением, которое будет использоваться школами.Каждая школа установит их на базу данных.И каждая школа предоставит в приложение свой файл настроек.Файл настроек будет содержать URL базы данных для конкретной школы, которая создала файл настроек.Это сделано для того, чтобы учащийся, использующий приложение, мог просто загрузить другой файл настроек, если он хочет подключиться к другой базе данных.

Мой вопрос: как мне защитить имя пользователя и пароль, используемые для подключения к базе данных?Таким образом, ТОЛЬКО приложение имеет права на чтение и запись в базу данных.И приложение имеет доступ для чтения и записи только к этой конкретной школе?

Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Спасибо

1 Ответ

2 голосов
/ 11 октября 2011

Взгляните на Jasypt , это библиотека Java, которая позволяет разработчику добавлять основные возможности шифрования в свои проекты с минимальными усилиями и без необходимости иметь глубокие знания о том, как работает криптография.

Если вы используете Spring, вы можете определить свой db.properties как:

 jdbc.driver=com.mysql.jdbc.Driver
 jdbc.url=jdbc:mysql://localhost/yourdb
 jdbc.username=userName
 jdbc.password=ENC(A6L729KukPEx7Ps8didIUWb01fdBRh7d)

и настроить его с Jasypt и Spring как:

<bean class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
   <constructor-arg>
     <bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
       <property name="config">
         <bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
           <property name="algorithm" value="PBEWithMD5AndDES" />
           <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />
         </bean>
       </property>
     </bean>
   </constructor-arg>
   <property name="locations">
     <list>
       <value>classpath:/META-INF/props/db/db.properties</value>
     </list>
   </property>   
</bean>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

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

В случае, если вы не используетеВесна, вот вам руководство Jasypt для достижения того же "вручную"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...