当前位置: 首页 > news >正文

Java 中数据脱敏的实现

数据脱敏

首先,要思考一个问题,SpringBoot 查询到的一条数据是一个 Java 对象,为什么返回给前端时候,前端拿到的却是 JSON 格式的数据呢?

是因为 SpringBoot 默认采用了 Jackson 作为序列化器,而 Jackson 序列化框架会自动把 Java 对象转换成 JSON 格式的数据,然后返回。

通过这个思路,就可以得到一个方案,就是在 JSON 序列化这个层面,去解决这个问题,从而对数据进行脱敏。

1. 自定义一个 Jackson 序列化器

public class IdNumberJsonSerializer extends JsonSerializer<String> {

  /**
	 * 举例:身份证号脱敏处理
	 *
	 * @return: String 脱敏后的结果
	 * @param: value 需要被序列化的字符串对象
	 * @param: jsonGenerator Json 生成器对象,用于生成 JSON 字符串
	 * @param: serializerProvider 序列化提供者,用于提供序列化相关的上下文信息
	 */
  @Override
  public void serialize(
    String value, JsonGenerator jsonGenerator, SerializerProvider serializerProvider
  ) throws IOException {
    if(value != null) {
      value = value.replaceAll("(\\d{6})\\d{10}(\\w{2})", "$1********$2");
      jsonGenerator.writeString(value);
      return;
    }
    jsonGenerator.writeNull();
  }
}

这里以身份证号进行举例

2. 把自定义序列化器应用到对应字段

在需要脱敏的字段上添加 @JsonSerialize 注解

public class User {

  /** 姓名 */
  private String name;

  /** 年龄 */
  private int age;

  /** 身份证号 */
  @JsonSerialize(using = IdNumberJsonSerializer.class)
  private String idCard;

}

优点:使用灵活方便

相关文章:

  • 前端快速搭建Node服务(解决跨域问题)
  • MySQL进阶-关联查询优化
  • The Wedding Juicer POJ - 2227
  • linux下进程间通信方式(匿名管道)
  • 直装永久授权,最新专业版集成VB7
  • 接口-菜品分页查询
  • 实战 - 使用 AutoAWQ 进行量化
  • 【量化科普】Beta,贝塔系数
  • 【数据仓库与数据挖掘基础】第二章 数据仓库原理
  • Linux和gcc/g++常用命令总结
  • Pytorch实现之S2GAN实现Sentinel-2光谱波段的空间分辨率
  • 【微信小程序】uniapp开发微信小程序
  • “Predict”和“Foresee”的区别
  • 算法005——有效三角形个数
  • 基于cross-attention算法关联文本和图像、图像和动作
  • 信息安全访问控制、抗攻击技术、安全体系和评估(高软42)
  • Matlab:矩阵运算篇——矩阵
  • Python —— pow()函数
  • 体验开源OpenHarmony+stratovirt模拟器
  • 第十六届蓝桥杯单片机组4T模拟赛二
  • 南宁企业如何建网站/百度怎么做广告
  • wap网站部署/室内设计培训班学费一般多少
  • 那个网站可以做logo/竞价推广账户托管服务
  • 网站建设哪里便宜/成都新站软件快速排名
  • 网站建设 紧急检查工作/策划方案
  • wordpress商城+微信/seo搜索引擎实训心得体会