如果在Hibernate.cfg.xml配置的用户名和密码配置如下:

        <!--连接数据库的用户名-->

        <property name="connection.username">sa</property>

        <!--连接数据库的密码-->

        <property name="connection.password">123</property>

那怎么感觉都有点不爽,因为如果这样数据库的用户名和密码一下就给别人知道了,有极大的安全隐患,特别是金融系统中,这样的配置更应该避免。

我这里采用对Hibernate的源码进行修改的方式(当然这里的源码最好是和用户当前使用的Hibernate版本相一致,免得到时又引起版本不同的问题),以起到对连接的用户名和密码进行加密码的方式,修改右如下:

        <!--连接数据库的用户名-->

        <property name="connection.username">c92b81768388f76d</property>

        <!--连接数据库的密码-->

        <property name="connection.password">1f65866187612115</property>

准备一个Encode.java,该JAVA实现加密encode和解密方法decode,加密和解密是配对的,先用其加密方法encode对其加密处理,用户名和密码就成了上面的方式,将Encode.java放到org.hibernate.util包下,在类org.hibernate.connection.DriverManagerConnectionProvider的configure方法中,先加上对用户名和密码解密的程序,,加到该方法的最上面,如下:

public void configure(Properties props) throws HibernateException {

 

String user = props.getProperty(Environment.USER); 

        String password = props.getProperty(Environment.PASS); 

        try {

         //对用户名进行解密

props.setProperty(Environment.USER, Encode.decode(user));

         //对密码进行解密

props.setProperty(Environment.PASS, Encode.decode(password)); 

} catch (Exception e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} 

//...

}

这里在后面的处理之前,先解密,就达到了加密解密的效果。

再打包发布就OK了。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2021-05-25
  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2022-02-25
猜你喜欢
  • 2022-01-02
  • 2021-04-04
  • 2022-03-01
  • 2021-12-30
  • 2021-11-21
  • 2021-11-19
  • 2021-09-23
相关资源
相似解决方案