保护隐私安全,springboot手机号脱敏技术助你无忧通信

简介: 尊重用户隐私一直是我们在开发应用程序时应重视的问题。在当今移动互联网时代,手机号码作为个人重要信息之一,泄露可能导致隐私侵犯和骚扰问题。为了保护用户的手机号安全,我们可以借助Spring Boot框架提供的强大功能,实现手机号脱敏的有效保护,让通信更加安心无忧。

尊重用户隐私一直是我们在开发应用程序时应重视的问题。在当今移动互联网时代,手机号码作为个人重要信息之一,泄露可能导致隐私侵犯和骚扰问题。为了保护用户的手机号安全,我们可以借助Spring Boot框架提供的强大功能,实现手机号脱敏的有效保护,让通信更加安心无忧。

那么,如何在Spring Boot应用中实现手机号脱敏呢?正好我们在项目中有个关于用户状态的需求,结合实践下面将介绍两种简单而高效的实践方法。

方法一:数据库查询替换字符串

使用mysql SUBSTRING函数

SELECT 
    CONCAT(
        SUBSTRING( mobile, 1, 3 ),
        '****',
    SUBSTRING( mobile, 8 )) AS mobile,
    account_status
FROM
    login_user_info

如上sql,我们将手机号的前三位与后四位截取了出来,中间的四位用**** 做了替换,结果如下:

方法二:基于注解实现

1.创建枚举类

SensitiveEnum

public enum SensitiveEnum {
   
   
    /**
     * 手机号
     */
    MOBILE;
}

2.创建字段注解

SensitiveField

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@JsonSerialize(using = SensitiveAspect.class)
public @interface SensitiveField {
   
   
    SensitiveEnum type();
}

3.创建脱敏工具类

SensitiveField

public class SensitiveUtil {
   
   
    /**
     * 隐藏手机号中间四位
     */
    public static String sensitiveMobile(String mobile) {
   
   
        return mobile.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }

}

4.自定义的Jackson序列化器

SensitiveAspect

@NoArgsConstructor
@AllArgsConstructor
public class SensitiveAspect extends JsonSerializer<String> implements ContextualSerializer {
   
   

    private SensitiveEnum sensitiveEnum;

    @Override
    public void serialize( String value,  JsonGenerator gen, SerializerProvider sp) throws IOException {
   
   
        if (StringUtils.isNotBlank(value) && null != sensitiveEnum) {
   
   
            switch (sensitiveEnum) {
   
   
                case MOBILE:
                    gen.writeString(SensitiveUtil.sensitiveMobile(value));
                    break;
                    //其他类型的脱敏处理
                default:
                    gen.writeString(value);
            }
        }
    }

    @Override
    public JsonSerializer<?> createContextual( SerializerProvider sp, BeanProperty bp) throws JsonMappingException {
   
   
        if (bp != null) {
   
   
            if (Objects.equals(bp.getType().getRawClass(), String.class)) {
   
   
                SensitiveField sensitiveField = bp.getAnnotation(SensitiveField.class);
                if (sensitiveField == null) {
   
   
                    sensitiveField = bp.getContextAnnotation(SensitiveField.class);
                }
                if (sensitiveField != null) {
   
   
                    return new SensitiveAspect(sensitiveField.type());
                }
            }
            return sp.findValueSerializer(bp.getType(), bp);
        }
        return sp.findNullValueSerializer(null);
    }

}

5.实体类添加注解

@Data
public class UserStatusReportVo implements Serializable {
   
   
    private static final long serialVersionUID = 1L;

    @SensitiveField(type = SensitiveEnum.MOBILE)
    private String mobile;
    /**
     * 账号状态(0-注销状态  1-正常使用)
     */
    private String accountStatus;
}

通过以上简单的步骤,我们成功实现了使用Spring Boot进行手机号脱敏的功能。用户的隐私得到了有效保护,同时保持了应用程序的正常。展示结果如下:
_20230619233857.png

需要注意的是我们方法二采用的是自定义的Jackson序列化器,是在数据返给前端前序列化数据的时候进行转换的,如果要在导出等非前端展示的数据中使用时,我们可以使用aop对数据进行拦截操作,在给对象赋值时进行数据操作。

目录
相关文章
|
12月前
|
机器学习/深度学习 数据采集 人工智能
Phi-3 技术报告:手机本地运行的高能力语言模型
Phi-3系列模型通过高质量数据训练与架构创新,实现小体积、高性能。38亿参数的phi-3-mini在手机端可达GPT-3.5水平,支持长上下文、多模态与高效推理,推动AI普惠化。
1115 1
|
11月前
|
JavaScript 前端开发 Java
基于springboot的手机销售网站
本研究聚焦手机商城系统的发展现状与趋势,探讨其技术架构、用户行为分析及安全支付等问题,结合Java、Vue、MySQL等技术实现高效、安全的移动端电商平台,推动行业创新与融合发展。
|
12月前
|
消息中间件 Ubuntu Java
SpringBoot整合MQTT实战:基于EMQX实现双向设备通信
本教程指导在Ubuntu上部署EMQX 5.9.0并集成Spring Boot实现MQTT双向通信,涵盖服务器搭建、客户端配置及生产实践,助您快速构建企业级物联网消息系统。
3185 1
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
1486 2
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
810 70
|
开发框架 负载均衡 Java
当热门技术负载均衡遇上 Spring Boot,开发者的梦想与挑战在此碰撞,你准备好了吗?
【8月更文挑战第29天】在互联网应用开发中,负载均衡至关重要,可避免单服务器过载导致性能下降或崩溃。Spring Boot 作为流行框架,提供了强大的负载均衡支持,通过合理分配请求至多台服务器,提升系统可用性与可靠性,优化资源利用。本文通过示例展示了如何在 Spring Boot 中配置负载均衡,包括添加依赖、创建负载均衡的 `RestTemplate` 实例及服务接口调用等步骤,帮助开发者构建高效、稳定的应用。随着业务扩展,掌握负载均衡技术将愈发关键。
531 6
|
机器学习/深度学习 安全 API
通过UID非法获取手机号的违法行为与技术逻辑剖析别异想天开了-优雅草卓伊凡
通过UID非法获取手机号的违法行为与技术逻辑剖析别异想天开了-优雅草卓伊凡
3537 0
通过UID非法获取手机号的违法行为与技术逻辑剖析别异想天开了-优雅草卓伊凡
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
394 2
|
存储 JSON 算法
JWT令牌基础教程 全方位带你剖析JWT令牌,在Springboot中使用JWT技术体系,完成拦截器的实现 Interceptor (后附源码)
文章介绍了JWT令牌的基础教程,包括其应用场景、组成部分、生成和校验方法,并在Springboot中使用JWT技术体系完成拦截器的实现。
1486 1
JWT令牌基础教程 全方位带你剖析JWT令牌,在Springboot中使用JWT技术体系,完成拦截器的实现 Interceptor (后附源码)

热门文章

最新文章