aapr密码读取工具_一文解决源代码扫描漏洞:配置文件中明文密码改为密文密码的方法

我们用java链接数据库,不管是web项目还是小程序,都需要把数据库密码写在配置文件中(当然你要写死在程序里也没有办法),或者数据库中,通常源代码漏洞扫描都会告诉你不能有明文密码,那么有什么办法可以变为密文呢?

一、思路如下

写一个非对称加密的工具类,用私钥加密明文,然后把公钥和得到的密文放在配置文件中,代码中读取密码的时候就把公钥和密文读取进来解密后给程序用。

很简单吧!

二、一个实现

这里就举一个实现的例子,直接借用druid提供的工具类来,毕竟我现在的项目数据库连接池都是用阿里的Druid.

1、在pom.xml加入如下依赖

com.alibaba    druid-spring-boot-starter    1.1.9

当然可能老项目的话没有用maven就直接添加如下jar即可;

druid-1.1.9.jar

2、写一个如下工具类

/** * druid数据库连接池中的密码进行非对称加密,使用方式 * 1、在cmd中执行:java -cp druid-1.1.9.jar com.alibaba.druid.filter.config.ConfigTools 要加密的串 * 2、获取公钥和加密串放到配置文件中(cmd获取方法右键标记,左键选取,按enter就复制到粘贴板了) * 3、使用的时候,获取公钥和加密串后调用下面的decrypt方法进行解密 * @author lwh * */public class DruidEncryptDecrypt {    public static String decrypt(String publicKey,String encryptPassword) {        try {            return ConfigTools.decrypt(publicKey,encryptPassword);        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }        return "";    }}

当然,你也可以直接使用ConfigTools就可以了,不过我这个方便写秘钥生成步骤,你也可以直接用默认的秘钥但是不建议。

2、按工具类中的步骤生成公钥和KEY,如下图所示

667c8883918d6cb2df0de2c0e4dabf13.png

获取到publicKey和passwd替换配置文件中的明文密码.

3、修改以前的数据库连接信息读取类,对密码调用DruidEncryptDecrypt进行解密,如下所示:

public String getPassword() {        //这里直接返回解密数据        return DruidEncryptDecrypt.decrypt(publicKey, password);    }

这一步骤可能有人会问了,我在哪里加这个代码,我用spring都是直接在application.xml中加上去的,调用不了java代码啊?

亲,这里有两种办法解决

办法1、如果你是springboot项目,那么你可以百度下springboot整合druid密码加密,那里有集成的,这个不多说。

办法2、你看application.xml中其实就是一个dataSource的bean,你直接抽取出来写成一个配置类即可,可以参考如下我的博文:点击更多找到我的博客:IT行者然后springboot标签下面的(SpringBoot2.0整合C3P0、Druid数据库连接池)文章。

当然,办法二是很通用的,所以我这里一般选择办法2.

4、大家也可以自己实现一个RSA工具类来做加密解密,就不需要一下子引用Druid,只不过我的数据库连接池就用的是阿里的,所以就直接用它的工具类啦。

搞定~

感想:要是被别人知道了配置文件也就是知道了密文和公钥,那也是很容易知道真实密码的,所以这个其实在我认为是自欺欺人罢了,还不如把公钥或者明文密码在程序启动的时候参数输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值