浅谈Java后端用户信息接口脱敏
在开发中,接口往往会返回用户的敏感信息,比如手机号、身份证号、邮箱等。为了保护用户隐私、降低安全风险、并满足法律合规要求,我们需要对这些数据进行脱敏处理。
本文基于 Spring Boot 和 Jackson 提供一种灵活的注解式脱敏方案,并结合 Hutool 工具类 DesensitizedUtil
做扩展与优化。
如何使用
分为两个步骤:
1. 自定义Serializer
自定义jackson序列化器,需要集成JsonSerializer,重写serialize方法实现脱敏逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import com.example.demo.utils.DesensitizedUtil; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; import java.io.IOException;
public class PhoneDesensitizationSerializer extends JsonSerializer<String> { @Override public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException { String desensitizedValue = DesensitizedUtil.desensitized(value); gen.writeString(desensitizedValue); } }
|
2. 简单调用
在需要被脱敏的字段上使用@JsonSerialize注解,并使用自定义的序列化器, 比如手机号脱敏:
1 2 3 4 5
| import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.nageoffer.shortlink.admin.common.serialize.PhoneDesensitizationSerializer;
@JsonSerialize(using = PhoneDesensitizationSerializer.class)
|
ToDo
还有很多待补充
可能需要对脱敏和非脱敏分别进行处理,以满足不同业务需求
参考博客文章