掌桥专利:专业的专利平台
掌桥专利
首页

一种基于java自定义注解可动态配置的日志脱敏方法

文献发布时间:2024-04-18 19:58:26


一种基于java自定义注解可动态配置的日志脱敏方法

技术领域

本发明涉及一种基于java自定义注解可动态配置的日志脱敏方法,属于数据脱敏技术领域。

背景技术

在真实生产环境中,有些涉及客户安全或者一些商业性敏感的数据,如身份证号、银行卡号、姓名、手机号等。普通的基于java工具类的方式进行脱敏,对代码的侵入性较强,代码编写起来又较为复杂不易理解。

现有技术中一般通过java自带的工具类进行字段的脱敏,使用String自带的方法对特使字符进行操作,定义成静态方法或者是在实体类的get、set方法中对敏感字段重新定义,该方式对代码的侵入性强,代码较为繁琐,且不易进行拓展。

发明内容

为解决上述问题,本发明提出一种基于java自定义注解可动态配置的日志脱敏方法,具体技术方案如下,

一种基于java自定义注解可动态配置的日志脱敏方法,包括如下步骤:

步骤一:编写自定义注解,该自定义注解定义在需要进行脱敏的实体类字段上;

步骤二:创建一个脱敏类型的枚举类;

步骤三:编写实现字段脱敏的类,并对传入的对象进行深克隆;

步骤四:获取深克隆出来的对象,对需要进行脱敏的字段进行处理,判断是否有属性为集合,如果有,对该属性进行递归循环操作获取所有的属性字段;

步骤五:对克隆对象按照定义的规则转化需要脱敏的字段并重新设置值;

步骤六:对克隆对象进行序列化操作。

优选的,所述自定义注解为SensitiveFieldAnno。

优选的,所述自定义注解下的属性包括脱敏的规则以及控制脱敏是否生效。

进一步的,所述自定义注解下的控制脱敏是否生效的属性具体是指该属性具有生效开关,包括开放状态和关闭状态。

优选的,所述步骤四中,若没有属性为集合,则判断属性是否为基本类型,若否,则执行步骤五,若是则直接按照脱敏规则脱敏。

优选的,所述步骤五的具体方法为:将所有的标注了自定义注解的字段并且注解开关属性是开放状态的字段筛选出来,若字段不为空则判断字段属于哪种自定义的枚举类型并进行相应的转换。

优选的,所述步骤六中,利用fastjson对克隆对象进行序列化操作。

本发明使用了java自定义注解的方式,直接标注在需要进行脱敏的字段上,并且可配置注解是否生效,简易而又高效的实现了关键字段的脱敏操作,不破坏原对象结构,避免了传统方式的对代码侵入性强的缺点。

附图说明

图1是本发明一种基于java自定义注解可动态配置的日志脱敏方法的工作流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

注解是一种能被添加到java源代码中的元数据,方法、类、参数和包都可以用注解来修饰。注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。

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

本发明通过注解的方式,标注在需要进行脱敏的字段上,来快速实现对真实敏感数据的改造并提供测试使用。具体如图1所示,一种基于java自定义注解可动态配置的日志脱敏方法,包括如下步骤:

步骤一:编写自定义注解SensitiveFieldAnno,该注解下的属性包括脱敏的规则以及控制脱敏是否生效,如身份证号将后六位打码、用户姓名将第二位打码也可自定义配置所需的具体方法,具体为属性具有生效开关,包括开放状态和关闭状态,该自定义注解定义在需要进行脱敏的实体类字段上。

步骤二:创建一个脱敏类型的枚举类,可根据实际需求自定义该枚举类。

步骤三:编写实现字段脱敏的类,并对传入的对象进行深克隆,避免破坏原对象实体。

步骤四:获取深克隆出来的对象,对需要进行脱敏的字段进行处理,判判断对象的实现是否是集合属性,如果是,就对该属性进行递归循环操作拿到所有的属性字段,即标注了注解的该实体属性下的所有的字段;如果不是,则判断属性是否为基本类型,如基本数值型或字符型,若是则直接按照脱敏规则脱敏,若否,则执行步骤五。

步骤五:对克隆对象按照定义的规则转化需要脱敏的字段并重新设置值;将所有的标注了自定义注解的字段并且注解开关属性是开放状态的字段筛选出来,若字段不为空,则判断字段属于哪种自定义的枚举类型并进行相应的转换。

步骤六:利用fastjson对克隆对象进行序列化操作。

在某个应用中,有需要进行脱敏的字段身份证号idCard,只需要在改字段上添加注解SensitiveFieldAnno,属性生效开关设置为开放属性,打印日志时调用处理类即可实现脱敏。

本发明利用java自定义注解,在序列化之前将日志要打印的对象克隆一份,然后找出标注该自定义注解的字段按照相应的规则进行相应的转化,然后再进行对象的序列化。本发明实现了使用java自定义注解的方式实现了日志字段的脱敏操作,相较于传统的方式,本发明只需要在需要脱敏的字段上标注注解并设置好脱敏规则即可,可快速实现日志字段的脱敏,实现敏感隐私数据的可靠保护,配置简单,代码侵入性低,可拓展性强,节约了开发成本和时间。

尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种基于java注解的动态配置数据脱敏的方法
  • 一种配置化的日志脱敏方法、装置和电子设备
技术分类

06120116489537