Hãy xem Jasypt , nó là một thư viện java cho phép nhà phát triển thêm các khả năng mã hóa cơ bản vào các dự án của mình với nỗ lực tối thiểu và không cần phải có kiến thức sâu về cách hoạt động của mật mã.
Trong trường hợp bạn sử dụng Spring, bạn có thể xác định db.properties
của mình như:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/yourdb
jdbc.username=userName
jdbc.password=ENC(A6L729KukPEx7Ps8didIUWb01fdBRh7d)
và định cấu hình nó với Jasypt và Spring là:
<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>
Điều này sẽ ẩn mật khẩu thực (bạn có thể làm tương tự cho username
) từ sinh viên, vì vậy họ sẽ không thể lấy chuỗi kết nối khi xem tệp thuộc tính.
Trong trường hợp bạn không sử dụng Spring, đây là hướng dẫn về Jasypt để đạt được cùng một "thủ công"