GithubHelp home page GithubHelp logo

houbb / sensitive Goto Github PK

View Code? Open in Web Editor NEW
517.0 12.0 170.0 462 KB

🔐Sensitive log tool for java, based on java annotation. (基于注解的 java 日志脱敏工具框架,更加优雅的日志打印。支持自定义哈希、支持基于 log4j2 插件的统一脱敏、支持 logback 插件统一脱敏)

License: Other

Batchfile 1.27% Shell 1.89% Java 96.84%
log java-annotation security java fastjson json sensitive sensitive-data-security log4j2 logback

sensitive's Introduction

生态社群

编号 名称 简介 标签
1 sensitive 基于注解的日志脱敏框架,更加优雅的日志打印 工具,日志
2 auto-log 日志自动输出 工具,日志
3 heaven 收集开发中常用的工具类 工具
4 resubmit 防止重复提交框架 工具
5 validator 新一代校验框架 工具
6 rate-limit 渐进式限流工具框架 工具
7 lock 开箱即用分布式锁 工具
8 lombok-ex 编译时注解框架,扩展 lombok 工具
9 csv CSV的读写工具 工具
10 iexcel EXCEL的读写工具,避免OOM 工具
11 leetcode 力扣算法个人学习笔记 学习
12 awesome-metaverse-zh 元宇宙精选 学习
13 rpc 手写rpc框架 学习,中间件
14 mybatis 手写mybatis框架 学习,中间件
15 cache 手写redis框架 学习,中间件
16 mq 手写mq框架 学习,中间件
17 ioc 手写spring ioc框架 学习,中间件
18 async 手写线程池异步框架 学习,中间件
19 jdbc-pool 手写数据库连接池实现 学习,中间件
20 sisyphus 支持注解的重试框架 学习,中间件
21 sandglass 任务调度时间框架 学习,中间件
31 minicat 简易版本 tomcat 学习,中间件
22 segment 基于结巴的分词实现 NLP
23 pinyin 高性能中文转拼音工具 NLP
24 opencc4j 中文繁简体转换 NLP
25 word-checker 中英文拼写检测 NLP
26 sensitive-word 敏感词 NLP
27 nlp-hanzi-similar 汉字相似度 NLP
28 word-cloud 好用的词云工具 DOC
29 markdown-toc 为文档生成目录 DOC
30 idoc 项目自动生成文档 DOC
32 data-factory 测试自动生成对象信息 TEST
33 junitperf 性能测试框架,测试报告生成 TEST
34 houbb.github.io 个人博客 学习

sensitive's People

Contributors

dependabot[bot] avatar dev-sxl avatar houbb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sensitive's Issues

com.github.houbb.sensitive.core.api.SensitiveService 102行中的 fieldNewObject 会出现 NullPointerException

在层级比较多的情况,使用SensitiveUtil.desJson进行脱敏的时候,com.github.houbb.sensitive.core.api.SensitiveService 102行中的 fieldNewObject 如果为null会出现 NullPointerException,导致死循环,同时还包括 113 行中的 arrayEntry;
同时还包括 com.github.houbb.sensitive.core.util.entry.SensitiveEntryUtil 中 26行的 Annotation annotation = var2[var4]; 同样会出现 java.lang.NullPointerException: null,导致错误,需要进行判空操作

threadLocal好像一直都没有remove?

image

作者好,这个脱敏我借鉴了很多,但是这里有一个StrategyBufferThreadLocal 这个一个实现脱敏的缓存
本质其实是使用了ThreadLocal,但是好像从来没有记性过remove,是在哪里remove掉我没发现吗?

性能消耗怎么样?

我们现在单条日志在2M左右 , 而且量特别大, 请问性能损耗怎么样?

json 依赖库选型问题?

fastjson 频爆 CVE,请问可以考虑更换为更加被广泛应用的 jackson 三方库用作 json 处理吗?(目前是为了防止安全问题,项目的 desJson 相关方法都不敢在项目中使用。)
另外项目是否可以基于 java 8 来调整一些相关代码。
谢谢。

StrategyPhone对于带区号的号码无法脱敏

commonSensitiveTest

    @Test
    public void commonSensitiveTest() {
        final String originalStr = "User{username='脱敏君', idCard='123456190001011234', password='1234567', email='[email protected]', phone='86-18888888888'}";
        final String sensitiveStr = "User{username='脱**', idCard='123456**********34', password='null', email='12******.com', phone='86-1888****888'}";

        User user = DataPrepareTest.buildUser();
        Assert.assertEquals(originalStr, user.toString());

        User sensitiveUser = SensitiveUtil.desCopy(user);
        Assert.assertEquals(sensitiveStr, sensitiveUser.toString());
        Assert.assertEquals(originalStr, user.toString());
    }

y一些使用上的问题

怎么对脱敏规则进行自定义扩展?例如手机号,目前框架只支持11位的手机号,对加了86开头、或者港澳电话、座机这些,可以自定义扩展么?又例如姓名,目前代码里面是写死了3000多个单姓字典做匹配,怎么对复姓、小数名族的姓名做规则扩展?

基于SLF4j实现拦截器形式的统一脱敏

大佬好,对于大部分老系统,已有大量的日志打印,如果每个去修改调用脱敏方法,工作量非常大。是否可以考虑基于SLF4j实现拦截器形式的统一脱敏?目标是尽量不改动原有代码。

自定义注解策略类,加密类注入不了

请问,这种自定义策略类,想用StringEncryptor ,该怎么注入呢?
`
public class CustomPasswordStrategy implements IStrategy {
@Autowired
private StringEncryptor stringEncryptor;

@Override
public Object des(Object original, IContext context) {
    String encryptStr = stringEncryptor.decrypt(ObjectUtil.objectToString(original));
    return encryptStr;
}

}
`

hasSensitiveEntry 方法取注解代码冗余?

对于 Field 类型,getdeclaredAnnotationsgetAnnotations是没有区别的,为什么要用如下代码取两次呢?没太看明白。

    public static boolean hasSensitiveEntry(Field field) {
        SensitiveEntry sensitiveEntry = field.getAnnotation(SensitiveEntry.class);
        if (ObjectUtil.isNotNull(sensitiveEntry)) {
            return true;
        }

        for (Annotation annotation : field.getAnnotations()) {
            sensitiveEntry = (SensitiveEntry.class);
            if (ObjectUtil.isNotNull(sensitiveEntry)) {
                return true;
            }
        }
        return false;
    }

一些优化建议

1.白名单
我想要的白名单是针对字段的,比如:"chars.scan.whiteList=id,ywlsh",但目前的白名单竟然是针对值的

2.全局配置
增加全局字段配置,针对特定字段做脱敏处理。比如接口对接过程中,以base64的形式传输图片,针对这种字段我希望全脱。规则之外的一些字段,如汽车的号牌号码的半脱。
比如配置成:
chars.scan.blackList=sfzImg:13,headImg:12,hphm:12

3.注解
是否可增加 @SensitiveStrategyIgnore,虽然配置到了正则规则,但不处理。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.