精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Springboot整合Hutool自定義注解實現數據脫敏

開發 架構
本文通過Spring Boot與Hutool庫的結合使用自定義注解,提供了一個簡單而強大的方式來實現數據脫敏。希望能幫助到你,成功地實現數據脫敏功能,并提高應用程序的安全性。

一、前言

我們在項目中會處理敏感數據(如手機號、身份證號、姓名、地址等)時,通常需要對這些數據進行脫敏,以確保數據隱私和安全。

我們本次使用 Hutool 庫來輕松實現數據脫敏,如果項目中不讓使用,可以自己防著hutool來寫一些工具類。

本次使用Springboot整合Hutool來自定義注解實現數據脫敏!

二、什么是數據脫敏

數據脫敏(Data Masking),也稱為數據遮蔽或數據隱藏,是一種數據保護技術,用于處理和存儲敏感數據時,以減少或消除數據中的敏感信息,從而保護數據的隱私和安全。數據脫敏的主要目的是在保持數據可用性的同時,減少數據泄露和濫用的風險。

「數據脫敏一般指數據庫正常存儲,返回前端時進行數據庫處理!」

三、Hutool簡介

Hutool是一個小而全的Java工具類庫,通過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數式語言般的優雅,讓Java語言也可以“甜甜的”。

Hutool是項目中“util”包友好的替代,它節省了開發人員對項目中公用類和公用工具方法的封裝時間,使開發專注于業務,同時可以最大限度的避免封裝不完善帶來的bug。

雖然Hutool可能會有一些bug,比起小編寫的還是強上不少的,所以選定它來!

現在最新版為:5.8.16,我們直接使用最新的,bug會少一些,功能會完善一些!

支持的脫敏規則:

  • 用戶id
  • 中文姓名
  • 身份證號
  • 座機號
  • 手機號
  • 地址
  • 電子郵件
  • 密碼
  • 中國大陸車牌,包含普通車輛、新能源車輛
  • 銀行卡

四、實戰整合

1、導入依賴

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.16</version>
</dependency>

2、自定義注解

@JsonSerialize(using = SensitiveInfoSerializer.class)用于指定在序列化時應該使用哪個自定義序列化器類

「需要和下面的注解搭配使用SensitiveInfoSerializer我們自定義的序列化器才會生效」

@JacksonAnnotationsInside 主要用于標記其他自定義注解,這意味著你可以在一個 Jackson 注解內部使用其他自定義注解,以組合各種注解來實現更復雜的序列化和反序列化邏輯。

/**
 * @author wangzhenjun
 * @date 2023/9/11 14:15
 */
@JacksonAnnotationsInside
@JsonSerialize(using = SensitiveInfoSerializer.class)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Desensitization {

    DesensitizationType type() default DesensitizationType.DEFAULT;

    /**
     * 前置不需要打碼的長度
     */
    int prefixLen() default 0;

    /**
     * 后置不需要打碼的長度
     */
    int suffixLen() default 0;

    /**
     * 遮罩字符
     */
    String maskingChar() default "*";
}

3、支持類型枚舉

/**
 * @author wangzhenjun
 * @date 2023/9/11 14:43
 */
public enum DesensitizationType {

    // 自定義規則
    CUSTOMIZE_RULE,
    // 默認的
    DEFAULT,
    //用戶id
    USER_ID,
    //中文名
    CHINESE_NAME,
    //身份證號
    ID_CARD,
    //座機號
    FIXED_PHONE,
    //手機號
    MOBILE_PHONE,
    //地址
    ADDRESS,
    //電子郵件
    EMAIL,
    //密碼
    PASSWORD,
    //中國大陸車牌,包含普通車輛、新能源車輛
    CAR_LICENSE,
    //銀行卡
    BANK_CARD
}

4、自定義序列化器

關于自定義的規則,大家可以根據自己的需求來寫工具類,我這里簡單使用Hutool的工具來了!

StrUtil.replace(value, prefixLen, suffixLen, maskingChar)StrUtil.hide(value, prefixLen, suffixLen)

createContextual 方法首先在序列化過程開始時被調用,返回的序列化器實例將用于后續的序列化過程。

serialize 方法負責實際的序列化邏輯,將字段的值轉換為JSON,并可以在其中執行自定義的脫敏邏輯。

/**
 * 數據脫敏序列化器
 *
 * @author wangzhenjun
 * @date 2023/9/11 14:16
 */
public class SensitiveInfoSerializer extends JsonSerializer<String> implements ContextualSerializer {

    private boolean useMasking = false;
    private DesensitizationType type;
    private int prefixLen;
    private int suffixLen;
    private String maskingChar;

    @Override
    public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
        if (useMasking && value != null) {
            switch (type) {
                case MOBILE_PHONE:
                    gen.writeString(DesensitizedUtil.mobilePhone(value));
                    break;
                case ID_CARD:
                    gen.writeString(DesensitizedUtil.idCardNum(value, prefixLen, suffixLen));
                    break;
                case CUSTOMIZE_RULE:
//                    gen.writeString(StrUtil.replace(value, prefixLen, suffixLen, maskingChar));
                    gen.writeString(StrUtil.hide(value, prefixLen, suffixLen));
                    break;
                case CHINESE_NAME:
                    gen.writeString(DesensitizedUtil.chineseName(value));
                    break;
                case DEFAULT:
                    gen.writeString(value);
                default:
                    gen.writeString(value);
            }
        } else {
            gen.writeObject(value);
        }
    }

    @Override
    public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property) {
        if (property != null) {
            Desensitization desensitization = property.getAnnotation(Desensitization.class);
            if (desensitization != null) {
                this.type = desensitization.type();
                this.prefixLen = desensitization.prefixLen();
                this.suffixLen = desensitization.suffixLen();
                this.maskingChar = desensitization.maskingChar();
                useMasking = true;
            }
        }
        return this;
    }
}

5、實體類應用

/**
 * @author wangzhenjun
 * @date 2023/9/12 9:15
 */
@Data
public class User {

    @Desensitization(type = DesensitizationType.ID_CARD,prefixLen = 6,suffixLen = 16)
    private String cardId;

    @Desensitization(type = DesensitizationType.CHINESE_NAME)
    private String name;

    @Desensitization(type = DesensitizationType.MOBILE_PHONE)
    private String phone;

    @Desensitization(type = DesensitizationType.CUSTOMIZE_RULE,prefixLen = 3,suffixLen = 6)
    private String info;
}

6、測試

@GetMapping("/getUser")
public Result getUser(){
    User user = new User();
    user.setCardId("372911111111111111");
    user.setPhone("15822229999");
    user.setName("趙飛燕");
    user.setInfo("這是機密文件,該打碼打碼");
    return Result.success(user);
}

完美脫敏,此次應該有掌聲!

五、總結

本文通過Spring Boot與Hutool庫的結合使用自定義注解,提供了一個簡單而強大的方式來實現數據脫敏。希望能幫助到你,成功地實現數據脫敏功能,并提高應用程序的安全性。

本次例子脫敏選項沒有演示全,大家可以自行補充完成,成為你們需要的數據脫敏策略,從而完美的處理用戶數據脫敏問題!

可以試著使用AOP來完成脫敏,有興趣的可以試一下哈!

責任編輯:姜華 來源: 小王博客基地
相關推薦

2024-07-02 11:42:53

SpringRedis自定義

2024-10-09 10:46:41

springboot緩存redis

2023-10-11 07:57:23

springboot微服務

2023-10-24 13:48:50

自定義注解舉值驗證

2021-02-20 11:40:35

SpringBoot占位符開發技術

2024-12-27 15:37:23

2021-12-30 12:30:01

Java注解編譯器

2022-02-17 07:10:39

Nest自定義注解

2017-08-03 17:00:54

Springmvc任務執行器

2024-10-14 17:18:27

2021-06-07 08:39:58

SpringBootMyBatisMapper

2023-09-04 08:12:16

分布式鎖Springboot

2012-02-02 13:45:28

JavaJSP

2025-03-11 08:34:22

2024-04-03 09:18:03

Redis數據結構接口防刷

2022-05-18 07:44:13

自定義菜單前端

2009-09-07 22:00:15

LINQ自定義

2023-09-12 13:59:41

OpenAI數據集

2022-11-01 11:15:56

接口策略模式

2020-11-25 11:20:44

Spring注解Java
點贊
收藏

51CTO技術棧公眾號

欧美成人在线影院| 日韩一区二区三区电影| 欧洲精品一区色| 亚洲手机在线观看| 午夜亚洲福利| 亚洲精品自拍偷拍| 毛片视频网站在线观看| 久操视频在线免费播放| 国产精品自在在线| 青青a在线精品免费观看| 亚洲女人毛茸茸高潮| 伊人久久亚洲| 欧美美女喷水视频| 岛国大片在线播放| 亚洲成人三级| 97久久精品人人做人人爽50路| 国产精品视频久久久| 精品成人免费视频| 天堂网在线观看国产精品| 亚洲国产免费av| 污视频在线观看免费网站| 国产污视频在线播放| 亚洲欧美经典视频| 色噜噜狠狠色综合网| 黄片毛片在线看| 激情欧美一区二区| 国产成人自拍视频在线观看| 动漫精品一区一码二码三码四码 | 亚洲综合一区二区不卡| 国产污视频网站| 亚洲深夜福利| 性欧美xxxx视频在线观看| 欧美黑人猛猛猛| 97精品视频| 亚洲一级片在线看| 亚洲av无码一区二区三区网址| 久久伊人影院| 欧美另类变人与禽xxxxx| 免费激情视频在线观看| 天堂在线中文网官网| 午夜亚洲国产au精品一区二区| 艳母动漫在线观看| 蜜桃视频在线观看www社区| 久久久精品2019中文字幕之3| 国内一区二区三区在线视频| 亚洲av无码一区二区三区dv | 亚洲高清免费视频| 超碰人人爱人人| h片在线免费观看| 亚洲欧美日韩在线播放| 中文字幕在线亚洲精品| 男人影院在线观看| 亚洲欧洲日韩一区二区三区| 亚洲电影免费| 天堂中文а√在线| 中文字幕在线不卡| 亚洲国产精品影视| av理论在线观看| 亚洲欧美日韩久久| 97超碰在线视| 女同一区二区免费aⅴ| 亚洲午夜久久久久久久久电影网| av日韩在线看| 国产传媒在线观看| 精品久久久久久久久久久久久 | 国产在线88av| 日韩欧美一区二区在线| 国产wwwxx| 国内不卡的一区二区三区中文字幕 | 天天爱天天做天天操| v片在线观看| 午夜精品久久久| 黄色一级免费大片| 亚洲精品777| 日韩欧美美女一区二区三区| 成人做爰www看视频软件| 精品国产导航| 亚洲天堂男人天堂| 日本一级特级毛片视频| 欧美日本一区二区高清播放视频| 欧美精品久久久久久久久久| 欧美亚洲精品天堂| 秋霞av亚洲一区二区三| 亚洲一区二区三区四区在线播放| 懂色av成人一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av | 91精品专区| 亚洲精品国产无套在线观| 国产精品裸体瑜伽视频| 国产黄色一区| 亚洲а∨天堂久久精品9966| 欧美黄色高清视频| 国产精品www994| 国产a∨精品一区二区三区不卡| 97人妻精品一区二区三区软件| 国产成人免费网站| 午夜老司机精品| 黄色成人在线网| 欧美日韩一区二区在线视频| 深田咏美中文字幕| 久久看人人摘| 2018日韩中文字幕| 亚洲一级视频在线观看| 不卡一区二区三区四区| 亚洲日本精品| 中文不卡1区2区3区| 欧美疯狂性受xxxxx喷水图片| 一本加勒比波多野结衣| 天天综合亚洲| 国产成人精品免高潮在线观看| 亚洲av无码乱码国产麻豆| 日本一区二区不卡视频| 六月婷婷在线视频| 日韩精品一区二区三区中文 | 三级亚洲高清视频| 成人羞羞视频免费| 欧美69xxxx| 欧美在线短视频| 欲求不满的岳中文字幕| 欧美日韩一区自拍| 92国产精品视频| a黄色在线观看| 日韩欧美第一页| 黄色免费看视频| 国产精品黄色| 成人9ⅰ免费影视网站| 日韩精品毛片| 欧美日韩一二三区| 中文字幕免费看| 日韩午夜激情| 国产精品免费一区二区三区观看 | 国产成人精品免费视频| 污污视频在线免费看| 一区二区不卡在线播放| 久热在线视频观看| 日韩在线二区| 国产精品一区二区三| 国产鲁鲁视频在线观看免费| 欧美性xxxxhd| 无码人妻精品一区二区三应用大全| 韩国自拍一区| 国产精品久久久久久久久婷婷| 伊人福利在线| 欧美成va人片在线观看| 欧美成人片在线观看| 国产成人在线色| 欧美一二三不卡| 国产精品久av福利在线观看| 欧美高清第一页| 蜜臀av中文字幕| 天天综合网天天综合色| 成人性生活免费看| 亚洲一卡久久| 欧美极品一区二区| 亚洲承认视频| 最近2019中文字幕大全第二页 | 免费的成人av| 伊人久久大香线蕉午夜av| 日本中文字幕视频一区| 北条麻妃久久精品| www黄色在线观看| 亚洲成人黄色影院| 极品人妻一区二区三区| 天堂蜜桃91精品| 亚洲国内在线| 日韩第一区第二区| 国外色69视频在线观看| 猫咪在线永久网站| 欧美午夜免费电影| 日本在线一级片| 9久草视频在线视频精品| 国模吧无码一区二区三区| 久草在线成人| 成人女保姆的销魂服务| 91色在线看| 亚洲视频国产视频| 国产伦子伦对白视频| 亚洲午夜免费电影| 久久精品无码一区| 国产一区999| 日韩少妇内射免费播放| 成人在线视频免费观看| 99re在线视频上| 阿v视频在线| 日韩一级裸体免费视频| 少妇人妻偷人精品一区二区| 色播五月激情综合网| 91精品一区二区三区蜜桃| 成人av网站在线观看| 五月婷婷狠狠操| 亚洲天堂偷拍| 一本久道久久综合| 全球av集中精品导航福利| 国产精品久久9| 超碰在线中文字幕| 中文字幕av一区| 午夜视频福利在线观看| 欧美丰满高潮xxxx喷水动漫| 亚洲黄色三级视频| 亚洲视频在线一区| av在线网站观看| 国产原创一区二区三区| 久久久久人妻精品一区三寸| 亚洲欧洲中文字幕| 日本福利一区二区三区| 天堂va在线高清一区| 国产精品网址在线| 久草成色在线| 精品国产一区av| 可以在线观看的av| 亚洲成色777777女色窝| 国产免费黄色大片| 欧美视频一区二区三区四区| 黄色片视频网站| 亚洲免费在线电影| 伊人影院综合网| 2020国产精品久久精品美国| 久久无码人妻一区二区三区| 日韩国产精品久久久久久亚洲| 久久国产精品网| 一区二区影视| 宅男噜噜99国产精品观看免费| 天堂成人娱乐在线视频免费播放网站| 亚洲综合社区网| 国产精品亚洲欧美一级在线| 国产精品女主播| 九九热线视频只有这里最精品| 久久久免费精品| 日本一本在线免费福利| 久久精品亚洲国产| 五月香视频在线观看| 亚洲欧美日韩一区二区三区在线| 婷婷色在线观看| 亚洲第一国产精品| 亚洲精品视频专区| 精品国产一区二区在线观看| jizz国产视频| 欧美一级专区免费大片| 国产精品熟女久久久久久 | 99在线精品视频免费观看软件| 欧美日韩精品一区二区三区四区| 国产成人精品一区二三区| 亚洲一区二区在线视频| 国产精品成人免费观看| 亚洲色图在线播放| 久久久久久久久毛片| 樱花影视一区二区| 欧美成人免费看| 亚洲线精品一区二区三区八戒| 欧美人妻精品一区二区三区| 亚洲综合色网站| 日韩精品人妻中文字幕| 精品福利樱桃av导航| 日本在线播放视频| 色琪琪一区二区三区亚洲区| chinese国产精品| 在线看一区二区| 国产精品久久久久久久久毛片| 欧美美女一区二区在线观看| 国产高清在线免费| 精品福利一区二区三区| 五月婷婷在线播放| 亚洲区免费影片| 日本在线观看免费| 欧美精品制服第一页| aa国产成人| 国产精品99久久久久久久久| 国产精品第一| 成人三级在线| 国内精品久久久久久久影视简单 | 国产精品九九| 男人亚洲天堂网| 另类调教123区| 中文字幕在线观看91| av在线这里只有精品| 亚洲精品视频久久久| 中文字幕亚洲区| 久草视频在线资源站| 色综合久久久久综合体桃花网| 一级一级黄色片| 日韩免费看网站| 黄色片在线播放| 久久国产天堂福利天堂| 涩涩视频在线免费看| 国产精品一区二区3区| 成人搞黄视频| 日韩精品极品视频在线观看免费| 欧美一区在线看| 99色精品视频| 国产乱子轮精品视频| 成人免费无遮挡无码黄漫视频| 1000部国产精品成人观看| 日韩av大片在线观看| 欧美日韩不卡一区二区| 四虎永久在线观看| 日韩亚洲一区二区| 国产伦精品一区二区三区视频金莲| 国产精品一久久香蕉国产线看观看 | 亚洲三级观看| 中文字幕精品一区二区三区在线| www.欧美色图| 精品人妻伦九区久久aaa片| 日韩欧美高清视频| 午夜美女福利视频| 中文字幕国产精品久久| 9lporm自拍视频区在线| 国产日韩欧美夫妻视频在线观看| 久久精品色综合| 99热一区二区三区| 日韩av电影免费观看高清完整版| 日韩大尺度视频| 中文字幕视频一区| 老熟妇一区二区三区啪啪| 亚洲精品成人久久| 欧美精品videosex| 成人淫片在线看| 日韩免费视频| 国产精品wwwww| 99视频有精品| 国产一级一级片| 欧美一区二区高清| 米奇精品一区二区三区| 国产精品久久久久久久久久久久| 日韩成人动漫在线观看| 久久久久久久久久久综合| 韩国一区二区在线观看| 91视频免费在观看| 在线视频国内自拍亚洲视频| 欧美日韩国产中文字幕在线| 亚洲18私人小影院| 激情小说亚洲色图| 男人天堂成人网| 黄页视频在线91| 91禁男男在线观看| 欧美日韩在线综合| 国产一级在线观看| 国产精品电影网| 色男人天堂综合再现| 91国产精品视频在线观看| 国产午夜亚洲精品午夜鲁丝片| 天天干天天干天天| 亚洲男女性事视频| 欧美片第一页| 日韩在线第一区| 麻豆成人免费电影| 日本一级二级视频| 日韩一区二区三区观看| 欧美人与性动交α欧美精品济南到| 亚洲一区二区三区四区在线播放 | 亚洲国产成人私人影院tom| www.久久久久久久| 中文字幕亚洲一区在线观看| 欧美大片1688网站| 一区二区三区四区欧美| 黄色资源网久久资源365| 日本精品人妻无码77777| 日韩欧美精品三级| 爱啪啪综合导航| 欧美精品免费观看二区| 日本美女视频一区二区| 国产91丝袜美女在线播放| 欧美日韩国产一级| 亚洲色图美国十次| 国产精品久久国产三级国电话系列| 99精品免费网| av手机在线播放| 91精品国产欧美一区二区| 久久亚洲资源| 欧美日韩亚洲一区二区三区四区| 免费在线成人网| 草视频在线观看| 日韩黄色高清视频| 国产69精品久久久久9999人| 欧美日韩一级在线| av电影一区二区| 中文字幕人妻一区二区在线视频| 久久手机免费视频| 你懂的在线观看一区二区| 欧美激情精品久久久久久小说| 国产精品对白交换视频| 亚洲精品久久久狠狠狠爱| 欧美亚洲成人xxx| 99成人在线视频| 99久久免费看精品国产一区| 91成人免费网站| 男女在线视频| 亚洲美女搞黄| 成人精品视频一区二区三区 | 日韩亚洲欧美在线| 在线看片福利| 日韩精品一区二区三区电影| 91在线porny国产在线看| 一区二区三区亚洲视频| 午夜精品一区二区三区在线播放| av亚洲在线观看| yy1111111| 制服丝袜中文字幕一区| 午夜久久中文| 精品免费久久久久久久| 国产欧美日韩精品一区|