如何在共享环境中保护用户名密码

时间:2010-04-29 09:18:02

标签: spring-security spring

如何使用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>

1 个答案:

答案 0 :(得分:0)

我不知道任何针对此的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");
  }
}