当前位置:首页 >知识 >金融用户敏感数据如何优雅地实现脱敏? 对代码的脱敏入侵性太强

金融用户敏感数据如何优雅地实现脱敏? 对代码的脱敏入侵性太强

2024-06-29 08:08:37 [百科] 来源:避面尹邢网

金融用户敏感数据如何优雅地实现脱敏?

作者:老马啸西风 开发 前端 Sensitive提供了基于注解的金融方式,并且内置了常见的用户雅地脱敏方式,便于开发。敏感

项目介绍

日志脱敏是数据实现常见的安全需求。普通的何优基于工具类方法的方式,对代码的脱敏入侵性太强,编写起来又特别麻烦。金融

金融用户敏感数据如何优雅地实现脱敏? 对代码的脱敏入侵性太强

sensitive[1] 提供了基于注解的用户雅地方式,并且内置了常见的敏感脱敏方式,便于开发。数据实现

金融用户敏感数据如何优雅地实现脱敏? 对代码的脱敏入侵性太强

日志脱敏

为了金融交易的何优安全性,国家强制规定对于以下信息是脱敏要日志脱敏的:

金融用户敏感数据如何优雅地实现脱敏? 对代码的脱敏入侵性太强

  1. 用户名
  2. 手机号
  3. 邮箱
  4. 银行卡号
  5. 密码
  6. 身份证号

特性

  1. 基于注解的日志脱敏。
  2. 可以自定义策略实现,金融策略生效条件。用户雅地
  3. 内置常见的敏感十几种脱敏内置方案。
  4. java 深拷贝,且原始对象不用实现任何接口。
  5. 支持用户自定义注解。
  6. 支持基于 FastJSON 直接生成脱敏后的 json。

快速开始

环境准备

  • JDK 7+
  • Maven 3.x

maven 导入

<dependency>    <groupId>com.github.houbb</groupId>    <artifactId>sensitive-core</artifactId>    <version>1.0.0</version></dependency>

核心 api 简介

SensitiveUtil 工具类的核心方法列表如下:

序号

方法

参数

结果

说明

1

desCopy()

目标对象

深度拷贝脱敏对象

适应性更强

2

desJson()

目标对象

脱敏对象 json

性能较好

3

desCopyCollection()

目标对象集合

深度拷贝脱敏对象集合


4

desJsonCollection()

目标对象集合

脱敏对象 json 集合


定义对象

  • UserAnnotationBean.java

通过注解,指定每一个字段的脱敏策略。

public class UserAnnotationBean {     @SensitiveStrategyChineseName    private String username;    @SensitiveStrategyPassword    private String password;    @SensitiveStrategyPassport    private String passport;    @SensitiveStrategyIdNo    private String idNo;    @SensitiveStrategyCardId    private String bandCardId;    @SensitiveStrategyPhone    private String phone;    @SensitiveStrategyEmail    private String email;    @SensitiveStrategyAddress    private String address;    @SensitiveStrategyBirthday    private String birthday;    @SensitiveStrategyGps    private String gps;    @SensitiveStrategyIp    private String ip;    @SensitiveStrategyMaskAll    private String maskAll;    @SensitiveStrategyMaskHalf    private String maskHalf;    @SensitiveStrategyMaskRange    private String maskRange;    //Getter & Setter    //toString()}
  • 数据准备

构建一个最简单的测试对象:

UserAnnotationBean bean  = new UserAnnotationBean();bean.setUsername("张三");bean.setPassword("123456");bean.setPassport("CN1234567");bean.setPhone("13066668888");bean.setAddress("中国上海市浦东新区外滩18号");bean.setEmail("whatanice@code.com");bean.setBirthday("20220831");bean.setGps("66.888888");bean.setIp("127.0.0.1");bean.setMaskAll("可恶啊我会被全部掩盖");bean.setMaskHalf("还好我只会被掩盖一半");bean.setMaskRange("我比较灵活指定掩盖范围");bean.setBandCardId("666123456789066");bean.setIdNo("360123202306018888");
  • 测试代码
final String originalStr = "UserAnnotationBean{ username='张三', password='123456', passport='CN1234567', idNo='360123202306018888', bandCardId='666123456789066', phone='13066668888', email='whatanice@code.com', address='中国上海市浦东新区外滩18号', birthday='20220831', gps='66.888888', ip='127.0.0.1', maskAll='可恶啊我会被全部掩盖', maskHalf='还好我只会被掩盖一半', maskRange='我比较灵活指定掩盖范围'}";final String sensitiveStr = "UserAnnotationBean{ username='张*', password='null', passport='CN*****67', idNo='3

(责任编辑:知识)

    推荐文章
    热点阅读