美好的一天。我有应用程序巫婆与数据库(Hibernate)和Spring MVC。问题是我将所有密码存储在数据源的app-config文件中:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- Using and configuring C3P0 proxy -->
<property name="driverClass"><value>org.h2.Driver</value></property>
<property name="jdbcUrl"><value>jdbc:h2:/home/vadim/workspace-sts-3.1.0.RELEASE/h2/EDUCATION</value></property>
<property name="user"><value>sa</value></property>
<property name="password">password<value></value></property>
<property name="initialPoolSize"><value>3</value></property> <!-- Number of Connections a pool will try to acquire upon startup -->
<property name="minPoolSize"><value>1</value></property> <!-- Minimum connection pool size -->
<property name="maxPoolSize"><value>20</value></property> <!-- Max connection pool size -->
<property name="maxConnectionAge"><value>3600</value></property> <!-- Set max connection age to 1 hour, after it will release -->
<property name="maxIdleTime"><value>600</value></property> <!-- 10 minutes connection can stay unused before be discarded -->
<property name="checkoutTimeout"><value>200000</value></property> <!-- Each what time check for unused connections -->
</bean>
在安全上下文中登录用户和管理员的密码:
<security:authentication-manager>
<security:authentication-provider>
<security:password-encoder hash="sha-256" base64="true"/>
<security:user-service>
<security:user name="user" password="user" authorities="ROLE_USER"/>
<security:user name="admin" password="admin" authorities="ROLE_ADMIN"/>
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>
我如何为任何其他眼睛保护它们,我必须制作自定义编码器,以使用Message Digest Spring或Java安全保护它们免受任何其他类型的攻击。编码器算法是服务或前端层的一部分???巫婆层必须有我对编码器的实现。谢谢你们。
答案 0 :(得分:1)
要加密属性,请考虑使用jasypt,它与Spring和Spring Security集成。例如,您可以定义加密属性:
datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)
然后创建一个EncryptablePropertyPlaceholderConfigurer
bean,它允许您像往常一样引用属性 - 它们会被解密:
...
<property name="password" value="${datasource.password}"/>
...
这与您的样本不完全一致,但它可能是一个很好的起点。
答案 1 :(得分:0)
对于大多数现代应用程序,真正的秘密是密钥或密码,而不是算法。
您可以使用Jasypt加密spring配置文件中的用户/密码或其他属性。 Jasypt还有dedicated spring integration,例如PropertySource或PropertyPlaceholderConfigurer