Разгледайте 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>
Това ще скрие действителната парола (можете да направите същото за username
). ) от студенти, така че те няма да могат да извлекат низа за връзка от разглеждане на файла със свойства.
В случай, че не използвате Spring, ето Ръководство за Jasypt за да постигнете същото "ръчно"