MyBatis-Plus 提供了数据安全保护功能,旨在防止因开发人员流动而导致的敏感信息泄露。从3.3.2版本开始,MyBatis-Plus 支持通过加密配置和数据安全措施来增强数据库的安全性。
YML 配置加密
MyBatis-Plus 允许你使用加密后的字符串来配置数据库连接信息。在 YML 配置文件中,以 mpw:
开头的配置项将被视为加密内容。
spring:
datasource:
url: mpw:qRhvCwF4GOqjessEB3G+a5okP+uXXr96wcucn2Pev6Bf1oEMZ1gVpPPhdDmjQqoM
password: mpw:Hzy5iliJbwDHhjLs1L0j6w==
username: mpw:Xb+EgsyuYRXw7U7sBJjBpA==
除了可以配置数据库连接配置信息,亲测其他配置也是生效的
密钥加密
使用 AES 算法生成随机密钥,并对敏感数据进行加密。
// 生成16位随机AES密钥
String randomKey = AES.generateRandomKey();
// 使用随机密钥加密数据
String encryptedData = AES.encrypt(data, randomKey);
import com.baomidou.mybatisplus.core.toolkit.AES;
public class Test {
public static void main(String[] args){
String data = "as123";
String randomKey = "d1104d7c3b616f0b";
// 使用密钥加密数据
String encryptedData = AES.encrypt(data, randomKey);
System.out.println(encryptedData);
}
}
如何使用
在启动应用程序时,通过命令行参数或环境变量传递密钥。
// Jar 启动参数示例(在IDEA中设置Program arguments,或在服务器上设置为启动环境变量)
--mpw.key=d1104d7c3b616f0b
# 启动系统服务
ENTRYPOINT ["java","-jar","app.jar","--mpw.key=d1104d7c3b616f0b"]