日志脱敏之后,无法根据信息快速定位怎么办?

news/2024/7/10 19:25:41 标签: 安全, 金融, 日志, 开源

日志脱敏之殇

小明同学在一家金融公司上班,为了满足安全监管要求,最近天天忙着做日志脱敏。

无意间看到了一篇文章金融用户敏感数据如何优雅地实现脱敏? 感觉写的不错,用起来也很方便。

不过日志脱敏之后,新的问题就诞生了:日志脱敏之后,很多问题无法定位。

比如身份证号日志中看到的是 3****************8,业务方给一个身份证号也没法查日志。这可怎么办?

在这里插入图片描述

安全与数据唯一性

类似于数据库中敏感信息的存储,一般都会有一个哈希值,用来定位数据信息,同时保障安全

那么日志中是否也可以使用类似的方式呢?

说干就干,小明在开源项目 sensitive 基础上,添加了对应的哈希实现。

使用入门

开源地址

https://github.com/houbb/sensitive

使用方式

1)maven 引入

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

2)引导类指定

SensitiveBs.newInstance()
.hash(Hashes.md5())

将哈希策略指定为 md5

3)功能测试

final SensitiveBs sensitiveBs = SensitiveBs.newInstance()
                .hash(Hashes.md5());

User sensitiveUser = sensitiveBs.desCopy(user);
String sensitiveJson = sensitiveBs.desJson(user);

Assert.assertEquals(sensitiveStr, sensitiveUser.toString());
Assert.assertEquals(originalStr, user.toString());
Assert.assertEquals(expectJson, sensitiveJson);

可以把如下的对象

User{username='脱敏君', idCard='123456190001011234', password='1234567', email='12345@qq.com', phone='18888888888'}

直接脱敏为:

User{username='脱**|00871641C1724BB717DD01E7E5F7D98A', idCard='123456**********34|1421E4C0F5BF57D3CC557CFC3D667C4E', password='null', email='12******.com|6EAA6A25C8D832B63429C1BEF149109C', phone='1888****888|5425DE6EC14A0722EC09A6C2E72AAE18'}

这样就可以通过明文,获取对应的哈希值,然后搜索日志了。

新的问题

不过小明还是觉得不是很满意,因为有很多系统是已经存在的。

如果全部用注解的方式实现,就会很麻烦,也很难推动。

应该怎么实现呢?

小伙伴们有什么好的思路?欢迎评论区留言


http://www.niftyadmin.cn/n/385220.html

相关文章

Windows PowerShell基础教程(1)——Windows PowerShell 简介

Windows PowerShell基础教程&#xff08;1&#xff09;——Windows PowerShell 简介 PowerShell 开发代号为Monad&#xff0c; 是支持 Windows XP/Server 2003/Vista/Server 2008操作系统的脚本语言。包括 Cmd.exe 、SH、KSH、CSH以及BASH Unix在内的大多数外壳程…

npm依赖安装与卸载

安装依赖 【npm install xxx】利用 npm 安装xxx依赖到当前命令行所在目录 【npm install xxx -g】利用npm安装全局依赖xxx 【npm install xxx –save】 安装并写入package.json的dependencies中 【npm install xxx –save-dev】安装并写入package.json的devDependencies中 删…

Shell脚本读文件和写文件

记录&#xff1a;439 场景&#xff1a;Shell脚本读文件和写文件。 版本&#xff1a;CentOS Linux release 7.9.2009。 1.Shell脚本使用cat读取文件内容 1.1脚本 脚本名称&#xff1a;b2023060121.sh 脚本内容&#xff1a; #!/bin/bashecho 1.使用cat读取文件内容,使用fo…

Android 单元测试框架 JUnit 4

JUnit 4测试框架&#xff0c;它是Java中广泛使用的单元测试框架之一&#xff0c;使开发者能够编写可重复、可维护和可验证的测试。 单元测试意义 单元测试是针对代码中的个别单元或组件进行测试&#xff0c;可以包括以下方面&#xff1a; 功能测试&#xff1a;测试代码单元是…

后端接口调式工具

后端接口调式工具 目录概述需求&#xff1a; 设计思路实现思路分析1.Postman2.Swagger 文档测试工具3.Sniff 文档测试工具4.APIpost 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardne…

SpringBoot+Vue 前后端分离在线学习平台-在线教育平台

SpringBootVue 前后端分离在线学习平台-在线教育平台 本项目是完整的前后端分离&#xff0c;在线学习系统。【有完整部署视频教程】 创新点&#xff1a; ①基于阿里云短信平台完成手机号变更【短信验证码】 ②基于支付宝沙箱支付完成在线购买课程【在线支付】 ③基于apach-echa…

说一下TreadLocal,深拷贝和浅拷, 强引用,软引用,弱引用和虚引用

ThreadLocal 是什么&#xff1f;有哪些使用场景&#xff1f; 线程局部变量是局限于线程内部的变量&#xff0c;属于线程自身所有&#xff0c;不在多个线程间共享。Java提供ThreadLocal类来支持线程局部变量&#xff0c;是一种实现线程安全的方式 ThreadLocal 是java中所提供的…

redis第二章-第二课-主从模式和哨兵模式原理

主从模式 1、复制一份redis.conf&#xff0c;命名为redis-6380.conf文件 2、修改该文件&#xff0c;修改端口号&#xff0c;线程文件&#xff0c;日志文件&#xff0c;以及指定文件存放目录 3.在从节点上配置&#xff0c;这是核心配置 从本机6379的redis实例复制数据 replica…