您好,欢迎来到刀刀网。
搜索
您的当前位置:首页在展示用户信息时,为保护用户隐私,部分数据需要进行部分隐藏(又叫数据脱敏)

在展示用户信息时,为保护用户隐私,部分数据需要进行部分隐藏(又叫数据脱敏)

来源:刀刀网

一、数据脱敏是什么?

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。🔐

在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用。

🔑🔑🔑🔑如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。🔑🔑🔑

二、脱敏前的准备

该文章中的数据脱敏是基于Springboot框架中自带的脱敏技术

2.准备工作

2.1依赖包的导入

//创建maven工程,引入关键依赖(专程用来做数据脱敏的jar包)
<dependency>
    <groupId>io.gitee.chemors</groupId>
    <artifactId>secure-ext-spring-boot-starter</artifactId>
    <version>1.0.3-RELEASE</version>
</dependency>
2.2对一些注解的认识

🚨@DesensitizationProp( ) //该注解适用于实体类中的某些属性需要进行脱敏的 默认类型说明如下

  • SensitiveTypeEnum.CHINESE_NAME //中文名

  • SensitiveTypeEnum.ID_CARD // 身份证号

  • SensitiveTypeEnum.FIXED_PHONE // 电话

  • SensitiveTypeEnum.MOBILE_PHONE // 手机

  • SensitiveTypeEnum.EMAIL //邮箱

  • SensitiveTypeEnum.BANK_CARD //银行卡号

  • SensitiveTypeEnum.PASSWORD // 密码

  • SensitiveTypeEnum.CUSTOM //自定义 (配合 DesensitizationProp 中preLength和sufLength 进行个性化定义)

注意:注解作用在实体类的属性上面。实体类中的属性含义必须和注解中的默认类型保持一致!!!!

2.3准备实体类

自行准备一个实体类,参考如下:

本人是利用了idea中的插件Lombok中的注解进行操作的,如果没有相关插件,请参考方式二!!

方式一:

import com.mos.secure.ext.annotations.DesensitizationProp;
import com.mos.secure.ext.enums.SensitiveTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;


@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {

    private Integer uid;    //用户id
    @DesensitizationProp(SensitiveTypeEnum.CHINESE_NAME)
    private String userName;    //用户名字
    @DesensitizationProp(SensitiveTypeEnum.ID_CARD)
    private String idCard;  //用户身份证号
    @DesensitizationProp(SensitiveTypeEnum.MOBILE_PHONE)
    private String userTel; //用户手机号
    @DesensitizationProp(SensitiveTypeEnum.EMAIL)
    private String userEmail;   //用户邮箱
    @DesensitizationProp(SensitiveTypeEnum.BANK_CARD)
    private String userBankCard;    //用户银行卡号
}

方式二:

import com.mos.secure.ext.annotations.DesensitizationProp;
import com.mos.secure.ext.enums.SensitiveTypeEnum;



public class User {

    private Integer uid;    //用户id
    @DesensitizationProp(SensitiveTypeEnum.CHINESE_NAME)
    private String userName;    //用户名字
    @DesensitizationProp(SensitiveTypeEnum.ID_CARD)
    private String idCard;  //用户身份证号
    @DesensitizationProp(SensitiveTypeEnum.MOBILE_PHONE)
    private String userTel; //用户手机号
    @DesensitizationProp(SensitiveTypeEnum.EMAIL)
    private String userEmail;   //用户邮箱
    @DesensitizationProp(SensitiveTypeEnum.BANK_CARD)
    private String userBankCard;    //用户银行卡号

    public User() {
    }

    public User(Integer uid, String userName, String idCard, String userTel, String userEmail, String userBankCard) {
        this.uid = uid;
        this.userName = userName;
        this.idCard = idCard;
        this.userTel = userTel;
        this.userEmail = userEmail;
        this.userBankCard = userBankCard;
    }

    public Integer getUid() {
        return uid;
    }

    public void setUid(Integer uid) {
        this.uid = uid;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getUserTel() {
        return userTel;
    }

    public void setUserTel(String userTel) {
        this.userTel = userTel;
    }

    public String getUserEmail() {
        return userEmail;
    }

    public void setUserEmail(String userEmail) {
        this.userEmail = userEmail;
    }

    public String getUserBankCard() {
        return userBankCard;
    }

    public void setUserBankCard(String userBankCard) {
        this.userBankCard = userBankCard;
    }

    @Override
    public String toString() {
        return "User{" +
                "uid=" + uid +
                ", userName='" + userName + '\'' +
                ", idCard='" + idCard + '\'' +
                ", userTel='" + userTel + '\'' +
                ", userEmail='" + userEmail + '\'' +
                ", userBankCard='" + userBankCard + '\'' +
                '}';
    }
}

三、编写接口来进行测试

  1. 注解解释
  • @RestController //该类中所有的API接口返回的数据,不管你对应的方法返回值为Map或是其他Object类型,它都会以Json字符串的形式返回给客户端

  • 🚨@Desensitization //实体类准备好的前提下,需要调用到该实体类的地方,在其方法的前面进行注释,使实体类中的脱敏技术得以发挥作用

  1. 代码展示
import com.mos.secure.ext.annotations.Desensitization;
import com.yhf.springboot.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class UserHandler {

    @Desensitization
    @RequestMapping("/information")
    public User test(){
        return new User(1,"张三","122222198820188888","13336558888","2568445232@qq.com","48555621142365879");
    }
}

四、效果展示

最终访问出来的结果如下图:

firefox浏览器访问效果如下:

Chrome访问效果如下:



📍小编在这里祝大家节日快乐啦~~~~~💖💖💖💖💖💖💖💖💖

📚有什么问题欢迎大家指正!!!!

🙏🙏🙏谢谢大家的观看,一起进步吧!!!🙏🙏🙏🙏

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务