数据脱敏使用

业务微服务添加依赖

<!-- 脱敏工具类-->
<dependency>
    <groupId>com.pig4cloud</groupId>
    <artifactId>pigx-common-sensitive</artifactId>
</dependency>

脱敏用例说明

参考例子: 用户列表 手机号字段 进行中间 4 位 替换成 ****

只需要在对应 VO 对象增加 @Sensitive

@Sensitive(type = SensitiveTypeEnum.MOBILE_PHONE)
@ApiModelProperty(value = "手机号")
private String phone;

脱敏规则支持

  • 支持的替换规则有 SensitiveTypeEnum
/**
 * 自定义 根据属性的指定哪几位打码
 */
CUSTOMER,
/**
 * 用户名, 刘*华, 徐*
 */
CHINESE_NAME,
/**
 * 身份证号, 110110********1234
 */
ID_CARD,
/**
 * 座机号, ****1234
 */
FIXED_PHONE,
/**
 * 手机号, 176****1234
 */
MOBILE_PHONE,
/**
 * 地址, 北京********
 */
ADDRESS,
/**
 * 电子邮件, s*****o@xx.com
 */
EMAIL,
/**
 * 银行卡, 622202************1234
 */
BANK_CARD,
/**
 * 密码, 永远是 ******, 与长度无关
 */
PASSWORD,
/**
 * 密钥, 永远是 ******, 与长度无关
 */
KEY
/**
 * IPV4 类型 113.123.198.176 主机部分打码 113.123.198.*
 */
        IPV4,

/**
 * 中国大陆车牌,包含普通车辆、新能源车辆
 */
CAR_LICENSE

脱敏规则个性化

Sensitive 注解默认为 CUSTOMER 模式,可通过指定从第几个字符开始打码和从尾部第几个字符开始打码的方式,让开发人员自由控制打码规则。

@Sensitive(prefixNoMaskLen = 4, suffixNoMaskLen = 4)
private String appId;

Sensitive 注解默打码符号位认为 * 模式,可通过 maskStr 属性指定打码符号。

脱敏前端处理

若用户的手机号字段脱敏为 133***1234,当用户编辑数据时,需先判断用户输入的手机号字段中是否包含。若包含,则说明用户未对该字段进行编辑,后端无需传递此字段。 若不包含打码字段,则表明用户已编辑了手机号字段,需要后端进行更新。

角色动态脱敏 (v5.6+)

  • 服务对应的微服务配置文件增加脱敏权限
pigx.sensitive.word.mask: no_mask

脱敏规则可根据角色权限动态配置(no_mask)。当角色拥有【敏感数据查看】权限时,该角色所属的用户可查看未脱敏的原始数据。

1719410508