深圳市网站建设哪家好,一般通过少女,做网站租空间,wordpress去掉图片项目介绍
日志脱敏是常见的安全需求。普通的基于工具类方法的方式#xff0c;对代码的入侵性太强#xff0c;编写起来又特别麻烦。
sensitive提供基于注解的方式#xff0c;并且内置了常见的脱敏方式#xff0c;便于开发。
同时支持 logback 和 log4j2 等常见的日志脱敏…项目介绍
日志脱敏是常见的安全需求。普通的基于工具类方法的方式对代码的入侵性太强编写起来又特别麻烦。
sensitive提供基于注解的方式并且内置了常见的脱敏方式便于开发。
同时支持 logback 和 log4j2 等常见的日志脱敏插件。
拓展阅读
金融用户敏感数据如何优雅地实现脱敏
日志脱敏之后无法根据信息快速定位怎么办
log4j2 插件统一脱敏
说明
上面的方法非常适用于新的项目按照响应的规范进行推广。
但是很多金融公司都有很多历史遗留项目或者使用不规范比如使用 map 等导致上面的方法在脱敏技改时需要耗费大量的时间而且回溯成本很高。
有没有什么方法可以直接在日志层统一处理呢
log4j2 Rewrite
我们可以基于 log4j2 RewritePolicy 统一使用脱敏策略。
说明如果使用 slf4j 接口实现为 log4j2 时也是支持的。
使用入门
maven 引入
引入核心脱敏包。
dependencygroupIdcom.github.houbb/groupIdartifactIdsensitive-log4j2/artifactIdversion1.6.1/version
/dependency其他的一般项目中也有如 log4j2 包
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-api/artifactIdversion${log4j2.version}/version
/dependency
dependencygroupIdorg.apache.logging.log4j/groupIdartifactIdlog4j-core/artifactIdversion${log4j2.version}/version
/dependencylog4j2.xml 配置
例子如下:
?xml version1.0 encodingUTF-8?
Configuration statusWARN packages com.github.houbb.sensitive.log4j2.layoutPropertiesProperty nameDEFAULT_PATTERN%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n/PropertyProperty nameDEFAULT_CHARSETUTF-8/Property/PropertiesAppendersConsole nameConsole targetSYSTEM_OUTSensitivePatternLayout//Console/AppendersLoggersRoot levelDEBUGAppenderRef refConsole//Root/Loggers/Configuration几个步骤 指定 package 为 packages com.github.houbb.sensitive.log4j2.layout 按照 log4j2 layout 规范指定 Layout 策略为 SensitivePatternLayout
测试
正常的日志打印
private static final String TEST_LOG mobile:13088887777; bankCard:6217004470007335024, email:mahuatengqq.com, amount:123.00, IdNo:340110199801016666, name1:李明, name2:李晓明, name3:李泽明天, name4:山东小栗旬 , birthday:20220517, GPS:120.882222, IPV4:127.0.0.1, address:中国上海市徐汇区888号;;logger.info(TEST_LOG);自动脱敏效果如下
01:37:28.010 [main] INFO com.github.houbb.sensitive.test.log4j2.Log4j2AndSlf4jLayoutTest - mobile:130****7777|9FC4D36D63D2B6DC5AE1297544FBC5A2; bankCard:6217***********5024|444F49289B30944AB8C6C856AEA21180, email:mahu*****qq.com|897915594C94D981BA86C9E83ADD449C, amount:123.00, IdNo:340110199801016666, name1:李明, name2:李晓明, name3:李泽明天, name4:山东小栗旬, birthday:20220517, GPS:120.882222, IPV4:127.0.0.1, address:中国上海市徐******|821A601949B1BD18DCBAAE27F2E27147;ps: 这里是为了演示各种效果实际默认对应为 1,2,3,4,9 这几种策略。
log4j2 配置定制化
为了满足各种用户的场景在 V1.6.0 引入了 SensitivePatternLayout 策略的可配置化。
用户可以在应用 resources 下通过 chars-scan-config.properties 配置文件指定。
默认配置
log4j2 配置中SensitivePatternLayout 配置默认为
chars.scan.prefix:,‘“| ()
chars.scan.scanList1,2,3,4,9
chars.scan.replaceList1,2,3,4,9
chars.scan.defaultReplace12
chars.scan.replaceHashmd5
chars.scan.whiteList属性说明
SensitivePatternLayout 策略的属性说明。
属性说明默认值备注prefix需要脱敏信息的匹配前缀:,‘“ () 和英文竖线降低误判率replaceHash哈希策略模式md5支持 md5/none 两种模式scanList敏感扫描策略列表1,2,3,41~10 内置的10种敏感信息扫描策略多个用逗号隔开replaceList敏感替换策略列表1,2,3,41~10 内置的10种敏感信息替换策略多个用逗号隔开defaultReplace敏感替换默认策略121~13 内置的13种敏感信息替换策略指定一个。当列表没有匹配时默认使用这个whiteList白名单希望跳过处理的白名单信息
其中 1-13 的内置策略说明如下
策略标识说明1手机号2身份证3银行卡4邮箱5中国人名6出生日期7GPS8IPV49地址10护照11匹配任意不掩盖12匹配任意半掩盖13匹配任意全掩盖
不足之处
这里的策略自定义和 log4j2 的插件化比起来确实算不上强大但是可以满足 99% 的脱敏场景。
后续有时间考虑类似 log4j2 的 plugins 思想实现更加灵活的自定义策略。
logback 脱敏插件
说明
为了便于用户使用v1.6.0 开始支持 logback 插件模式。
使用入门
maven 引入
引入 logback 依赖包
dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion${logback.version}/version
/dependency指定 logback.xml 配置
configuration!-- 基于 converter --conversionRule conversionWordsensitive converterClasscom.github.houbb.sensitive.logback.converter.SensitiveLogbackConverter /!-- 使用 converter --appender nameSTDOUTConverter classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %sensitive%n/pattern/encoder/appender!-- 使用 layout --appender nameSTDOUTLayout classch.qos.logback.core.ConsoleAppenderlayout classcom.github.houbb.sensitive.logback.layout.SensitiveLogbackLayoutpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/layout/appender!-- 设置根日志级别为DEBUG并将日志输出到控制台 --root levelDEBUGappender-ref refSTDOUTConverter/appender-ref refSTDOUTLayout//root
/configuration这里共计支持 Converter 和 Layout 两种模式任选一个即可。
建议使用 SensitiveLogbackConverter脱敏日志内容。
日志效果
脱密效果和 log4j2 类似如下
01:42:32.579 [main] INFO c.g.h.sensitive.test2.LogbackMain - mobile:130****7777|9FC4D36D63D2B6DC5AE1297544FBC5A2; bankCard:6217***********5024|444F49289B30944AB8C6C856AEA21180, email:mahu*****qq.com|897915594C94D981BA86C9E83ADD449C, amount:123.00, IdNo:340110199801016666, name1:李明, name2:李晓明, name3:李泽明天, name4:山东小栗旬 , birthday:20220517, GPS:120.882222, IPV4:127.0.0.1, address:中国上海市徐******|821A601949B1BD18DCBAAE27F2E27147;配置属性
同 log4j2此处不再赘述。
小结
基于日志插件的方式更加方便便于项目的推广使用实用性更强。
项目的开源地址 https://github.com/houbb/sensitive