作为一名程序员,日常的开发工作离不开与数据库的打交道,而我们的应用程序中也经常会配置数据库链接。你有没有想过,只要有权限访问我们项目代码的人,都可以看到配置文件中的账号密码?相信很多人项目中的配置文件都是这样写的################Mysql配置##########################spring.datasource.type=com.zaxxer.hikari.HikariDataSourcespring.datasource.driver-class-name=com.mysql.cj.jdbc.Driversspring.datasource.url=jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=GMT%2B8spring.datasource.username=rootspring.datasource.password=123456spring.datasource.url配置了数据库链接地址和端口,spring.datasource.username配置了账号,spring.datasource.password配置了密码。如果这样写,无异于裸奔。任何有权访问此文件的人都可以使用MySQL客户端工具连接数据库,其中的数据根本不安全。当然,如果是本地或者测试环境还可以,但是对于生产环境就不能接受了。毕竟这样的安全性太差了,不小心把数据库删了跑了还是有可能的。相对来说,有经验的数据库运维人员不会直接提供数据库服务的IP地址和端口,而是提供域名,在url地址上配置对应的域名,然后通过解析让其访问数据库服务域名,域名地址是不对外解析的,所以生产环境的hosts和开发者本机需要配置hosts来配置域名对应的IP地址。这种方法会比上面的直接裸奔形式要好。外人拿到代码,没有hosts配置是无法访问数据库的,相对难度更大。但是这样做也有一个问题,就是开发者仍然可以通过MySQL客户端访问数据。万一哪天心情不好,删库跑路也不是不可以,不然就有机会私自泄露数据。那么很多小明问,有没有什么办法可以有效控制这种情况呢?让尽可能少的人接触数据库中的数据,但同时又不能影响开发的进度,对开发要友好。如果有问题,就会有答案。这时候就需要介绍一个神器,那就是jasypt。jasypt可以帮我们在配置文件中配置加密后的账号和密码,再结合秘钥,全面掌控数据库的安全。让我们试试看。首先,有一个SpringBoot服务需要连接数据库。下面来看看在没有引入jasypt的情况下如何使用。代码如下:################Mysql配置##########################spring.datasource.type=com.zaxxer.hikari.HikariDataSourcespring.datasource.driver-class-name=com.mysql.cj.jdbc.Driversspring.datasource.url=jdbc:mysql://127.0.0.1:3306/abc?useUnicode=true&characterEncoding=utf-8&useTimezone=true&serverTimezone=GMT%2B8spring.datasource.username=rootspring.datasource.password=123456#Customer终端等待连接池连接的最大毫秒数spring.datasource.hikari.connection-timeout=20000#最小空闲连接数spring.datasource.hikari.minimum-idle=5#最大连接池大小spring.datasource.hikari.maximum-pool-size=20#连接池最大空闲时间,单位毫秒spring.datasource.hikari.idle-timeout=30000#池中连接关闭后的最长生命周期毫秒数spring.datasource.hikari.max-lifetime=1200000spring.datasource.hikari.auto-commit=truespring.datasource.hikari.connection-test-query=SELECT1UserController.javapackagecom.controller;导入com.mapper.UserEntity;导入com.mapper.UserMapper;导入org.springframework.beans.factory.annotation.Autowired;导入org.springframework.boot.autoconfigure.EnableAutoConfiguration;导入org.springframework.web.bind.annotation.RequestMapping;导入org.springframework.web.bind.annotation.RestController;导入java.util.Date;importjava.util.List;@RestController@EnableAutoConfiguration@RequestMapping("/user")publicclassUserController{@AutowiredprivateUserMapperuserMapper;@RequestMapping("add")publicintaddUser(Stringname,Stringdesc)throwsException{intid,num=0;UserEntityu=newUserEntity(0,name,desc,newDate());num=userMapper.insert(u);id=u.getId();返回ID;}@RequestMapping("getlist")publicList
