国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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技術棧公眾號

日韩成人高清在线| 玖玖国产精品视频| 亚洲黄色中文字幕| 91精品国产一区二区三密臀| 极品日韩久久| 欧美网站一区二区| 模特精品在线| 四虎影院在线播放| 久久这里只有精品99| 国产一区免费电影| 成人国产激情在线| 999精品视频在线| 欧美系列日韩一区| 香蕉久久a毛片| 亚洲激情综合| 日韩高清欧美| 99香蕉久久| 亚洲黄色网址| 向日葵视频成人app网址| 欧美日韩色网| 中文字幕伦理免费在线视频| 成人网页在线免费观看| 日韩精品免费在线视频观看| 欧美人与禽zozo性伦| 国产欧美中文在线| 丰满放荡岳乱妇91ww| 久久精品国产99国产精品| 久久国产精品久久久久久电车| 中文精品电影| 老牛嫩草一区二区三区日本| 欧美国产激情| 日韩亚洲在线| 亚洲成aⅴ人片久久青草影院| 欧美午夜精彩| 久久99高清| 欧美日韩成人| 久久综合影视| 人妖欧美一区二区| 蜜臀久久99精品久久久画质超高清| 国产精品最新| 老司机一区二区三区| aaa亚洲精品一二三区| 国产精品大尺度| 午夜精品久久久久久久蜜桃app| 欧美日韩国产精选| 欧美视频第二页| 亚洲欧美一区二区三区情侣bbw | 日韩欧美一区在线| 中文字幕日韩欧美| 欧洲成人免费aa| 99久久免费国| 凹凸日日摸日日碰夜夜爽1| 猫咪av永久| 久久精品女人天堂av免费观看| 少妇久久久久| 久久精品国产99| 亚洲高清在线视频| 精品国产欧美一区二区五十路| 欧美精品一区二区三区蜜桃视频| 久久韩剧网电视剧| 国产欧美亚洲视频| 欧美最大成人综合网| 欧洲熟妇精品视频| 成年人网站在线| 国产一区二区三区亚洲| 日韩国产一区二| 亚洲精品国产高清久久伦理二区| 91精品国产91热久久久做人人| 欧美激情亚洲精品| 日产精品一线二线三线芒果| 黄色无遮挡网站| hd国产人妖ts另类视频| 成人女性视频| 91免费观看国产| 亚洲欧洲在线观看| 区一区二区三区中文字幕| 日韩av在线中文| 91九色综合| 日韩伦理视频| 97久久精品人人做人人爽| 日韩精品中文字幕在线不卡尤物 | 日韩电视剧免费观看网站| 98精品国产自产在线观看| 成人一级生活片| 污污片在线免费视频| 欧美日韩一区二区综合| 久久激情视频| 福利视频一区二区| 久久全球大尺度高清视频| 欧美风狂大伦交xxxx| 国产精品igao| av成人在线看| 激情婷婷综合| 国产免费成人在线视频| 欧美一区二区私人影院日本| 69174成人网| av影片在线看| 精品久久久亚洲| 久久久综合激的五月天| 欧美激情亚洲激情| 四虎4hu永久免费入口| 在线观看av日韩| 污片在线免费看| 菠萝菠萝蜜在线视频免费观看| 亚洲欧美韩国| 日韩欧美不卡| 亚洲欧洲av另类| 99久久久无码国产精品| 国产午夜精品久久久| 水蜜桃亚洲一二三四在线| 国产后进白嫩翘臀在线观看视频 | 精品久久一区| 色婷婷国产精品综合在线观看| 91理论片午午论夜理片久久| 99色在线播放| 欧美午夜精彩| 国产精品久久久久久久裸模| 国产精品高潮呻吟久久av野狼| 国产网站av| 激情久久免费视频| 午夜视频在线观看一区二区 | 久久66热这里只有精品| 欧美bbbxxxxx| 中文字幕一区二区三区不卡 | av在线日韩| 偷拍亚洲欧洲综合| 国产日韩在线免费| 白白色在线观看| 日本一区二区视频在线| 国产成人午夜视频网址| 国产最新在线| 最新成人av在线| 久久久婷婷一区二区三区不卡| 中文字幕在线视频久| 亚洲精品一二三四区| 国产精品日韩二区| 国产精品久久久久久吹潮| 亚洲蜜臀av乱码久久精品蜜桃| 国产精品视频免费在线| www黄色av| 免费福利影院| 日本成人在线电影网| 久久影院资源网| 在线观看免费版| 中文字幕在线观看一区二区| 欧美精品激情blacked18| 9191在线| 一区二区三区日韩欧美精品| 人人妻人人澡人人爽欧美一区| 日韩精品免费一区二区三区| 亚洲最大中文字幕| 丰满少妇又爽又紧又丰满69| 久久久精品五月天| 豆国产97在线| 亚洲自拍偷拍网| 欧美人与性动交| 青春草免费在线视频| 欧美日韩美女视频| 最近中文字幕一区二区| 国产精品资源在线观看| 久久久久久久成人| 欧美momandson| 欧美一区二区三区思思人| 日本一区视频| 日本一区二区三区免费乱视频| 欧美中文字幕在线观看视频| 免费高清不卡av| 免费av一区二区三区| 在线播放亚洲| 99久久国产免费免费| 中文字幕一区二区三三| 欧美在线激情视频| 制服丝袜专区在线| 欧美亚洲国产一区二区三区| 在线看片免费人成视久网| 欧美日韩国产在线| 狠狠操夜夜操| 日日夜夜天天综合| 亚洲国产精品国自产拍av秋霞| 国产男女无遮挡| 亚洲精品在线观看网站| 国产一区二区三区四区三区四| 老司机性视频| 国产精品久久久久久| 狠狠色综合欧美激情| 久久久美女艺术照精彩视频福利播放| 亚洲精品视频导航| 精品久久人人做人人爰| 国产精品成人3p一区二区三区| 五月天色综合| 亚洲性夜色噜噜噜7777| 精品一区二区三区视频在线播放| 久久免费少妇高潮久久精品99| 日韩第一区第二区| 中文字幕在线精品| 加勒比中文字幕精品| 欧美在线观看网址综合| 精品一区二区精品| 久久久久免费精品| 在线免费观看日韩欧美|