【问题标题】:How to protect username password in shared enviornment如何在共享环境中保护用户名密码
【发布时间】:2010-05-01 02:38:39
【问题描述】:
如何使用spring在共享主机环境中保护数据库用户名和密码
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql:///BUSINESS</value></property>
<property name="username"><value>root</value></property>
<property name="password"><value>password</value></property>
</bean>
【问题讨论】:
标签:
spring-security
spring
【解决方案1】:
我不知道有任何 Spring 特定的解决方案。
在共享主机环境中,应确保该文件不是公开可读的,这样其他用户就无法查看您的文件内容。在共享应用服务器的情况下,应用服务器应该在同一个组中,因此只有应用服务器可以访问您的文件。
应用程序不应该使用 MySql root 密码。您应该创建一个对特定架构具有有限权限的 MySql 帐户(例如,一个只能执行 DML 语句而不能执行 DDL 语句的用户)。
要将用户名/密码保留在纯文本文件之外,您可以在 Java 类中硬编码配置(这基本上是 security through obscurity)。替换配置:
<bean id="dataSource"
class="my.app.CustomDriverManagerDataSource" >
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
</bean>
并将这个类添加到你的类路径
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class CustomDriverManagerDataSource extends DriverManagerDataSource {
public DriverManagerDataSource() {
super("jdbc:mysql:///BUSINESS","root","password");
}
}