¡Tres soluciones comunes para la desensibilización de datos son muy fáciles de usar!

1. Implementación de desensibilización de datos SQL

Implementación de desensibilización de datos MYSQL (número de teléfono, tarjeta de identificación)

-- CONCAT()、LEFT()和RIGHT()字符串函数组合使用,请看下面具体实现

-- CONCAT(str1,str2,…):返回结果为连接参数产生的字符串
-- LEFT(str,len):返回从字符串str 开始的len 最左字符
-- RIGHT(str,len):从字符串str 开始,返回最右len 字符

-- 电话号码脱敏sql:

SELECT mobilePhone AS 脱敏前电话号码,CONCAT(LEFT(mobilePhone,3), '********' ) AS 脱敏后电话号码 FROM t_s_user

-- 身份证号码脱敏sql:

SELECT idcard AS 未脱敏身份证, CONCAT(LEFT(idcard,3), '****' ,RIGHT(idcard,4)) AS 脱敏后身份证号 FROM t_s_user

2. Implementación de la desensibilización de datos JAVA

Para referencia: Haiqiang/sensible-plus

https://gitee.com/strong_sea/sensible-plus

Complemento de desensibilización de datos, actualmente admite desensibilización de direcciones, desensibilización de números de tarjetas bancarias, desensibilización de nombres chinos, desensibilización de líneas fijas, desensibilización de números de identificación, desensibilización de números de teléfonos móviles, desensibilización de contraseñas, una es una desensibilización regular, la otra se basa en la desensibilización de la longitud de visualización, la el valor predeterminado es la desensibilización regular, puede configurar sus propias reglas según sus necesidades.

3.mybatis-mate-sensible-jackson

El nuevo trabajo de mybatisplus se puede probar y usar, y la producción debe cargarse.

Según el tipo de política definida, los datos se desensibilizan. Por supuesto, la política se puede personalizar.

# 目前已有
package mybatis.mate.strategy;

public interface SensitiveType {
    String chineseName = "chineseName";
    String idCard = "idCard";
    String phone = "phone";
    String mobile = "mobile";
    String address = "address";
    String email = "email";
    String bankCard = "bankCard";
    String password = "password";
    String carNumber = "carNumber";
}

No se presentarán los conceptos básicos de Spring Boot. Se recomienda ver este tutorial gratuito:

https://github.com/javastacks/spring-boot-best-practice

1, pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-mate-examples</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>mybatis-mate-sensitive-jackson</artifactId>
    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>

</project>

2, aplicación.yml

# DataSource Config spring: datasource: # driver-class-name: org.h2.Driver # schema: classpath:db/schema-h2.sql # data: classpath:db/data-h2.sql # url: jdbc:h2: mem:prueba # nombre de usuario: raíz # contraseña: prueba nombre-clase-controlador: com.mysql.cj.jdbc.Url del controlador: jdbc:mysql://localhost:3306/mybatis_mate?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone= Nombre de usuario UTC: contraseña raíz: 123456 # Configuración de Mybatis Mate mybatis-mate: cert: # Agregue WeChat wx153666 para la autorización de compra, ¡comience conmigo si no quiere ser una prostituta! El certificado de prueba no será válido, no lo use en un entorno formal concesión: licencia thisIsTestLicense: 

3. Clase de inicio de la aplicación

paquete mybatis.mate.sensible.jackson; importar org.springframework.boot.SpringApplication; importar org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication clase pública SensitiveJacksonApplication { // 测试访问 http://localhost:8080/info ,http://localhost:8080/list public static void main(String[] args) { SpringApplication.run(SensitiveJacksonApplication.class, args) ; } } 

Notas de estudio de Spring Boot, compartir con usted.

4. Clase de configuración, estrategia de desensibilización personalizada

paquete mybatis.mate.sensible.jackson.config; importar mybatis.mate.databind.ISensitiveStrategy; importar mybatis.mate.strategy.SensitiveStrategy; importar org.springframework.context.annotation.Bean; importar org.springframework.context.annotation.Config @Configuration public class SensitiveStrategyConfig { /** * Inyectar estrategia de desensibilización*/ @Bean public ISensitiveStrategy sensitivoStrategy() { // La desensibilización de tipo testStrategy personalizada devuelve nueva SensitiveStrategy().addStrategy("testStrategy", t -> t + "* **prueba***"); } } 

5. Clase ejecutiva

Usuario, la anotación identifica el campo de desensibilización y selecciona la estrategia de desensibilización

paquete mybatis.mate.Sensible.Jackson.entity; Importar Lombok.getter; Importar Lombok.Setter; Importar mybative.annotation.fieldSense; Importar myb Atis.mate.Sensible.Jackson.config.Sensiblestrategyconfig; Importar mybatis.mate.strategy.SensibleType ; @Getter @Setter public class User { private Long id; /** * Aquí hay una estrategia personalizada {@link SensitiveStrategyConfig} inyección de inicialización */ @FieldSensitive("testStrategy") private String nombre de usuario; /** * Política de soporte predeterminada { @link SensitiveType } */ @FieldSensitive(SensitiveType.mobile) private String mobile; @FieldSensitive(SensitiveType.email) private String email; } 

Controlador de usuario

paquete mybatis.mate.sensible.jackson.controller; importar mybatis.mate.databind.ISensitiveStrategy; importar mybatis.mate.databind.RequestDataTransfer; importar mybatis.mate.sensible.jackson.entity.User; importar mybatis.mate.sensible.jackson.mapper.UserMapper; importar mybatis.mate.strategy.SensitiveType; importar org.springframework.beans.factory.annotation.Autowired; importar org.springframework.web.bind.annotation.GetMapping; importar org.springframework.web.bind.annotation.RestController; importar javax.servlet.http.HttpServletRequest; importar java.util.HashMap; importar java.util.List; importar java.util.Map; @RestController public class UserController { @Autowired private UserMapper userMapper; @Autowired privado ISensitiveStrategy sensitivoStrategy; // 测试访问 http://localhost: selectById(1L)); mapausuario.put("prueba", 123); mapaUsuario.put("MapaUsuario", new HashMap<Cadena, Objeto>() { selectById(1L)); mapausuario.put("prueba", 123); mapaUsuario.put("MapaUsuario", new HashMap<Cadena, Objeto>() {
   
   { put("user2", userMapper.selectById(2L)); put("test2", "hi china"); }}); // Llame manualmente a la desensibilización de la estrategia userMap.put("mobile", sensitivoStrategy.getStrategyFunctionMap( ) .get(SensitiveType.mobile).apply("15315388888")); return userMap; } // Visita de prueba http://localhost:8080/list // Sin desensibilización http://localhost:8080/list?skip =1 @GetMapping("/list") public List<User> list(HttpServletRequest request) { if ("1".equals(request.getParameter("skip"))) { // Omitir el procesamiento de descifrado RequestDataTransfer.skipSensitive (); } devuelve userMapper.selectList(null); } } 

Asignador de usuarios

paquete mybatis.mate.sensible.jackson.mapper; importar com.baomidou.mybatisplus.core.mapper.BaseMapper; importar mybatis.mate.sensible.jackson.entity.User; importar org.apache.ibatis.annotations.Mapper; La interfaz pública de @Mapper UserMapper extiende BaseMapper<User> { } 

6. prueba

OBTENGA http://hostlocal:8080/lista

[ { "id": 1, "nombre de usuario": "Jone***prueba***", "móvil": "153******81", "correo electrónico": "t****@baomidou .com" }, { "id": 2, "nombre de usuario": "Jack***prueba***", "móvil": "153******82", "correo electrónico": "t** **@baomidou.com" }, { "id": 3, "nombre de usuario": "Tom***prueba***", "móvil": "153******83", "correo electrónico": "t****@baomidou.com" } ] 

OBTENGA http://localhost:8080/list?skip=1

[
  {
    "id": 1,
    "username": "Jone",
    "mobile": "15315388881",
    "email": "[email protected]"
  },
  {
    "id": 2,
    "username": "Jack",
    "mobile": "15315388882",
    "email": "[email protected]"
  },
  {
    "id": 3,
    "username": "Tom",
    "mobile": "15315388883",
    "email": "[email protected]"
  }
]

Supongo que te gusta

Origin blog.csdn.net/2301_78588786/article/details/131921646
Recomendado
Clasificación