Skip to content

数据脱敏服务 ​

Micro-Mask 是响应拦截式数据脱敏微服务模块,基于 Spring Boot 的 ResponseBodyAdvice 实现。通过 MaskResponseAdvice 在接口响应写出前按规则自动对敏感字段进行脱敏,全程配置驱动,无需在业务代码中引入 @Mask 注解,对业务代码零侵入。Maven 坐标:com.wkclz.microapp:micro-mask。

功能特性 ​

  • Method + URI 规则匹配:以「请求方法 + 请求路径」作为脱敏规则的匹配条件,路径支持 AntPathMatcher 通配符(如 /**、/user/*),可精确到具体接口,实现多接口统一或差异化脱敏策略
  • JSONPath 定位脱敏字段:通过 JSONPath 表达式精确定位响应体中的脱敏字段,支持 $[*] 数组语法递归匹配,可对对象、数组、嵌套数组中的字段进行统一脱敏
  • 三种脱敏策略:按「正则表达式 > JS 脚本 > 兜底长度规则」的优先级逐级匹配:
    • 正则表达式:基于 RegularTool 提取并替换匹配内容为等长 *
    • JS 脚本:通过 JsUtil 执行自定义脚本处理脱敏逻辑
    • 兜底长度规则:按字段长度自动兜底(短于 4 位返回 ***,短于 8 位保留首位加 ****,其余保留前 3 位加 ****)
  • 两级缓存:Guava Cache 缓存「用户+方法+URI → 规则列表」的匹配结果,MaskCache 缓存全部脱敏规则,通过 Redis 变更通知与定时任务驱动缓存刷新,规则变更可实时生效
  • 在线测试/验证接口:内置脱敏测试接口(/rule/test)可即时验证规则对样例数据的脱敏效果,验证接口(/rule/verify)返回内置的嵌套 JSON 样例数据便于观察各种脱敏路径的覆盖情况
  • 规则管理:提供脱敏规则的增删改查接口,支持分页查询、规则启用/停用开关,规则变更后自动同步缓存

适用场景 ​

  • 接口响应中手机号、身份证号、银行卡号等敏感字段的自动脱敏
  • 避免业务代码侵入,无需在各业务接口中手动调用脱敏方法
  • 多个接口需要统一脱敏策略,或不同接口需要差异化脱敏规则
  • 数据展示给低权限用户、日志/埋点输出等需要敏感信息保护的场景

技术栈 ​

  • Java 25
  • Spring Boot(ResponseBodyAdvice)
  • Redis(缓存变更通知)
  • Fastjson2(JSONPath 解析与脱敏改写)
  • Jackson(响应序列化)
  • Guava Cache(两级缓存)

快速导航 ​

Released under the MIT License.