美文网首页
加密JDBC配置文件中的用户密码

加密JDBC配置文件中的用户密码

作者: mikeliuy | 来源:发表于2017-05-09 10:17 被阅读1665次

项目中使用JDBC连接数据库,一般配置如下:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close"   
    p:driverClassName="oracle.jdbc.driver.OracleDriver"  
    p:url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"   
    p:username="test"  
    p:password="test" />  

如果有用户这台服务器访问权限(比如root),就可以看到这个applicationContext.xml文件,并且打开文件获取数据库的用户和密码,所以不够安全,需要对这里的密码进行加密。

首先,将配置文件中这些value抽取到property文件中。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"  
    p:location="classpath:jdbc.properties"  
    p:fileEncoding="utf-8" />  
      
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  destroy-method="close"   
    p:driverClassName="${driverClassname}"  
    p:url="${url}"   
    p:username="${username}"  
    p:password="${passwd}" />  

PropertyPlaceholderConfigurer类是负责抓取jdbc.properties中的属性值,填充到dataSource中相应的位置。

接下来,将jdbc.properties中的密码值进行压缩(可以使用其它方式),得到一个不易记忆的字符串,这需要实现PropertyPlaceholderConfigurer(extends PropertyResourceConfigurer)的解密方法convertProperty。

package net.jdbc.util;  
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; 
import net.jdbc.util.ZipUtil; 
  
public class JdbcPwdPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer{  
    @Override  
    protected String convertProperty(String propertyName, String propertyValue) {  
        System.out.println(propertyName + " -> " + propertyValue);  
        if("passwd".equals(propertyName)){  
            return ZipUtil.unzip(propertyValue);  
        }  
        return propertyValue;  
    }  
}  

然后在配置文件中,将JdbcPwdPropertyPlaceholderConfigurer类替换PropertyPlaceholderConfigurer。

<bean class="net.jdbc.util.JdbcPwdPropertyPlaceholderConfigurer"  
    p:location="classpath:jdbc.properties"  
    p:fileEncoding="utf-8"/>  

jdbc.properties文件内容如下:

driverClassname=oracle.jdbc.driver.OracleDriver  
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl  
username=test
passwd=UEsDBBQACAgIAK5QqUoAAAAAAAAAAAAAAAABAAAAMCtJLS4BAFBLBwgMfn/YBgAAAAQAAAA=

进行单元测试,打印日志内容。

driverClassname -> oracle.jdbc.driver.OracleDriver
url -> jdbc:oracle:thin:@127.0.0.1:1523:orcl
username -> test
passwd -> UEsDBBQACAgIAK5QqUoAAAAAAAAAAAAAAAABAAAAMCtJLS4BAFBLBwgMfn/YBgAAAAQAAAA=

相关文章

  • 加密JDBC配置文件中的用户密码

    项目中使用JDBC连接数据库,一般配置如下: 如果有用户这台服务器访问权限(比如root),就可以看到这个appl...

  • 我们可以做的更好1

    一、加密连接数据库明文密码 步骤:1、对jdbc.property文件的用户名和密码进行加密,我们就需要创建一个加...

  • Spring Boot 集成 jasypt 3.0.3 配置文件

    添加依赖 yml中添加配置文件 输出加密密码工具类 得到加密密码进行替换 建议部署的时候 盐 不要放到配置文件,可...

  • Ubuntu 开启root登录权限、ssh远程访问权限

    一、给root用户添加密码 二、修改配置文件允许root登录 在配置文件中添加下面两行行代码 三、开启ssh远程访...

  • 用户和组

    1、配置文件/etc/passwd中存放着用户名和用户ID对应关系的数据库 2、用户的加密密码通常被存放在/etc...

  • Hash加密算法

    关键词:Hash加密算法、Security中的PasswordManagerHash与加密 密码安全 用户的密码,...

  • spring boot数据访问

    spring boot数据访问之JDBC 首先在全局配置文件中设置连接数据库的一些信息,包括用户名、密码、url、...

  • CAS单点登录-自定义认证之JDBC+MD5(四)

    本章节的内容为JDBC认证,查找数据库进行验证,其中包括: 密码加密策略(无密码,简单加密,加盐处理) 认证策略(...

  • shadow的哈希值爆破

    一:前言: Linux 系统下,用户的密码会被加密保存在文件/etc/shadow中,关于密码的加密方式与破解方法...

  • day09-用户管理-笔记

    Day10-用户管理 导读 今日内容1.为用户添加密码为新用户添加密码为用户变更密码密码怎么才算复杂小结2.用户的...

网友评论

      本文标题:加密JDBC配置文件中的用户密码

      本文链接:https://www.haomeiwen.com/subject/cnlbtxtx.html