1 简介

对于什么是数据脱敏,以下解释来自百度百科

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏。

在大数据环境下隐私保护的需求越来越频繁的被提及,对于一些敏感的信息,市面上很多应用都有一些脱敏的处理。例如百度的个人中心对账号的脱敏:

实现思路:在数据转json字符串的过程中,使用自定义序列化工具,解析Java Bean上标注为敏感信息的属性,将其按照规则进行脱敏,最终返回给前端的就是脱敏后的数据。

2 引入依赖

<dependency><groupId>com.github.f-sunrise-q</groupId><artifactId>advance-tool-datamask</artifactId><version>1.0.1-RELEASE</version>
</dependency>

3 前后端数据脱敏

3.1 使用注解定义带敏感信息的响应实体

使用注解@SensitiveInfo来自己标注哪些属性是敏感的,默认是全部隐藏,可设置mode来选择隐藏中间部分,MaskModeEnum.MID表示隐藏中间1/3。

@Data
public class SensitiveResponseDto {@SensitiveInfo(mode = MaskModeEnum.MID)private String userName;@SensitiveInfoprivate String password;@SensitiveInfo(mode = MaskModeEnum.MID)private String phone;
}

定义测试接口

@GetMapping("/test")
public SensitiveResponseDto test(){SensitiveResponseDto responseDto = new SensitiveResponseDto();responseDto.setUserName("admin");responseDto.setPassword("123456");responseDto.setPhone("12345678910");return responseDto;
}

调用测试接口的结果:

3.2 自定义handler

当默认的全部脱敏和中间1/3脱敏不能满足要求时,支持自定义脱敏规则。例如定义对IP地址隐藏中间两个数字的规则:

public class CustomDataMaskHandler implements IDataMaskHandler {/*** 自定义规则:如果data为IP,则隐藏中间两个数字** @param data* @return*/public String mask(String data) {if(ObjectUtils.isNotEmpty(data) && DataMaskConstant.IP_PATTERN.matcher(data).find()){String[] numbers = data.split("\\.");return numbers[0] +".*.*." + numbers[3];}return data;}
}

SensitiveResponseDto中增加clientIp,并设置handler为CustomDataMaskHandler.class

@Data
public class SensitiveResponseDto {@SensitiveInfo(mode = MaskModeEnum.MID)private String userName;@SensitiveInfoprivate String password;@SensitiveInfo(mode = MaskModeEnum.MID)private String phone;@SensitiveInfo(handler = CustomDataMaskHandler.class)private String clientIp;
}

修改测试接口

@GetMapping("/test")
public SensitiveResponseDto test(){SensitiveResponseDto responseDto = new SensitiveResponseDto();responseDto.setUserName("admin");responseDto.setPassword("123456");responseDto.setPhone("12345678910");responseDto.setClientIp("127.0.0.1");return responseDto;
}

再次调用测试接口

3.3 关闭脱敏功能

在application.properties中增加配置
advance.tool.datamask.close=true
再次调用测试接口,数据正常返回。

4 日志脱敏

若是希望打印日志对敏感数据也脱敏,也可使用这个工具。logback.xml中增加配置

<conversionRule conversionWord="msg" converterClass="com.advance.sunrise.tool.datamask.log.SensitiveInfoConverter"> </conversionRule>


测试接口中打印日志:

源码地址:https://github.com/f-sunrise-q/baseCore/tree/master/advance-parent/advance-tools

数据脱敏工具advance-tool-datamask相关推荐

  1. python个人数据脱敏_数据脱敏的处理方法及查询

    [摘要] 关键词:集算器.SPL.数据脱敏.报表 1).数据脱敏是"指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.在涉及客户安全数据或者一些商业性敏感数据的情况下, ...

  2. 数据脱敏技术的实践指南

    本文转载自:https://mp.weixin.qq.com/s/LsL7pIb3jEwCq6i0fsXKPA 一.概述 企业在运营过程中开展数据脱敏工作,往往面对的是大规模的数据集,信息化程度越高的 ...

  3. 数据脱敏为何如此重要?

    随着企业数字化转型的深入,数据已然成为了企业运行的重要资产.尤其是随着互联网+.云计算.大数据等信息技术与通信技术的迅猛发展,社会逐步进入了数据时代. 但是,与之而来的是数据泄露风险的加剧.根据近期发 ...

  4. 数据脱敏的处理方法及查询

    [摘要] 关键词:集算器.SPL.数据脱敏.报表 1).数据脱敏是"指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护.在涉及客户安全数据或者一些商业性敏感数据的情况下, ...

  5. 万字详解数据安全关键技术之数据脱敏

    摘要 数据脱敏是数据安全领域落地场景较为成熟的技术手段,在数据深层次.大范围的共享开放的今天,数据脱敏在不影响数据使用的前提下,保护敏感隐私数据,已成为数据安全建设重要内容.本文通过对数据脱敏技术及应 ...

  6. 改造了以前写的数据脱敏插件,更好用了

    以前用Mybatis插件的形式写了一个数据脱敏工具,但是发现有一定的局限性.很多时候我们从ORM查询到的数据有其它逻辑要处理,比如根据电话号查询用户信息,你脱敏了就没有办法来处理该逻辑了.所以脱敏这个 ...

  7. ssd测试工具 linux,英特尔ssd工具下载-Intel英特尔SSD Data Center Tool(数据中心工具)2.2.1 Linux版 - 极光下载站...

    早在2013年,微软就将win10系统的代号设定为Threshold.Threshold也是像Blue一样,会带来一波的系统更新,包括Windows Threshold.Windows Phone T ...

  8. 【linlong】Hutool工具,身份证号、手机号、姓名等数据脱敏信息工具类介绍

    前言   在开发系统过程中,经常会接触到大量的数据信息,这些数据信息可能包含身份证号.手机号.姓名.卡号等各种敏感信息.而有些用户需求是不允许,这些敏感信息数据为了保护用户个人信息的安全.对这些数据需 ...

  9. 【收藏】身份证号、手机号、姓名等数据脱敏信息工具类介绍

    前言   在开发系统过程中,经常会接触到大量的数据信息,这些数据信息可能包含身份证号.手机号.姓名.卡号等各种敏感信息.为了保护用户个人信息的安全.对这些数据需要进行特殊处理. 数据脱敏   数据脱敏 ...

最新文章

  1. 配置 Spring Batch 批处理失败重试
  2. 产品上线前会发生什么故事? | 每日趣闻
  3. apache 限制IP访问
  4. html region 折叠,js代码折叠的方法//#region 代码 //#endregion
  5. [转] Logistic函数
  6. sublime 安装 插件 package control,安装docblockr
  7. ORACLE设置用户密码不过期
  8. RedHat/CentOS发行版本号及内核版本号对照表
  9. css3加载图片淡入效果
  10. Web2.0时代,RSS你会用了吗?(技术实现总结)(转载)
  11. 关于“Exchange Server 地址列表服务未能响应”的错误解决方法。
  12. 【Python3网络爬虫开发实战】 1.5.4-RedisDump的安装
  13. 线程池拒绝策略-RejectedExecutionHandler
  14. antimalware可以关闭吗_微信小程序可以关闭吗?如何关闭?
  15. 重磅消息:F5收购Nginx!
  16. JavaScript:三大家族
  17. 图像调优1:清晰度相关参数MTF,SFR,MTF50,MTF50P 以及TVL的概念以及换算说明
  18. Hadoop安装教程单机/伪分布式配置
  19. 简单的光线追踪教程(一)
  20. 蓝牙怎么调声音大小_蓝牙耳机怎么调音量?

热门文章

  1. 使用nw-autoupdater实现客户端应用的自动升级
  2. 2017数模打怪升级总结
  3. composer下载(chordana composer下载)
  4. 笨办法学Python 经典Python入门书籍介绍
  5. 如何删除linux模板下文件,linux删除文件夹(linux删除文件夹命令是什么)
  6. Pulsar快速了解
  7. 22. 处理Excel文件-删除在其他文件中存在的记录
  8. 青龙面板--酷狗大字版-2022-05-07
  9. CDA Level1知识点总结之描述性统计分析
  10. 高性价比智能86盒面板方案