城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

信息安全无小事!手把手教你日志脱敏

9月9日 听风行投稿
  场景
  我们开发的程序迟早有一天都会上线到生产环境运行,但是没有人能保证自己的代码100不出BUG(别抬扛,真没BUG是代码写的少)
  当我们线上出BUG之后,最常见的定位问题方法就是排查日志文件,所以我们一般都会在开发程序时,在适当的位置输出一些日志信息。
  并且有一些日志并不是只打印一些业务字段,可能会将整个对象输出到日志中。比如这样:log。info(客户信息:{},JSON。toJSONString(customer));
  从代码的角度来说,不太严格的话,如果这个customer对象不是特别大的话,倒也没有多大的问题。
  但是咱们换个角度,从信息安全的角度来说,这会直接将用户的所有信息都打印在日志中。
  假设某一天,开发小哥或者运维小哥因为某些不太建议的操作,恶意从日志中获取用户的信息,比如用户的手机号,邮箱,身份证号,家庭住址如果你们公司是一家金融类公司,直接获取到一些富豪客户的信息,然后去做一些非法交易,后果很严重。
  (警告:这是反面教材,万万不可尝试)
  所以我们要怎么避免这种问题的发生呢?
  可以从以下几个方面解决:避免在代码中将敏感信息直接输出通过日志组件进行脱敏其他我也不知道的方法
  在代码中避免的难度相对要更大一点,在一个项目的整个开发周期中很难让所有人都能完全按照规范来执行,所以我们还是要用第二种方式来进行兜底。
  接下来的内容主要和大家讲解一下如何通过日志组件进行脱敏。
  在Java项目中使用的日志组件一般都会选择Logback或者Log4j,前段时间log4j漏洞风波沸沸扬扬,我们pass它,使用logback来做。
  Logback
  Logback是Java社区中使用最广泛的日志记录框架之一。它是其Log4j的替代品,比Log4j更快,并提供了更多的配置选项,归档日志文件更灵活。数据脱敏
  在我们的系统中多多少少都会有敏感信息,比如身份证号,家庭住址,银行卡号,手机号,邮箱等等,我们需要在记录日志时将这些敏感信息进行脱敏。
  假设我们会有如下用户信息日志输出:{userid:123456,address:朝阳区百子湾街道某小区1单元101,city:北京市,Country:中国,mobile:18888888888,email:heiz123xxx。com}
  在这个用户信息中,用户的地址,电话,手机,邮箱信息都是比较敏感的,我们需要进行脱敏。
  要实现这个功能,我们可以给Logback配置上脱敏规则,将脱敏规则添加到Logback的appender中。我们需要自定义一个Logback的PatternLayout。自定义PatternLayout
  我们自定义PatternLayout的目的是为了将脱敏规则添加到logback配置中的所有appender中。packagecom。heiz123。log。importch。qos。logback。classic。PatternLimportch。qos。logback。classic。spi。ILoggingEimportjava。util。ArrayLimportjava。util。Limportjava。util。regex。Mimportjava。util。regex。Pimportjava。util。stream。IntSauthoryuriy。luClassNameMaskingPatternLayoutDescriptiondate2022126publicclassMaskingPatternLayoutextendsPatternLayout{privatePatternmultilinePprivatefinalListStringmaskPatternsnewArrayList();publicvoidaddMaskPattern(StringmaskPattern){maskPatterns。add(maskPattern);multilinePatternPattern。compile(String。join(,maskPatterns),Pattern。MULTILINE);}OverridepublicStringdoLayout(ILoggingEventevent){returnmaskMessage(super。doLayout(event));}privateStringmaskMessage(Stringmessage){if(multilinePatternnull){}StringBuildersbnewStringBuilder(message);使用正则匹配符合脱敏要求的数据MatchermatchermultilinePattern。matcher(sb);while(matcher。find()){IntStream。rangeClosed(1,matcher。groupCount())。forEach(group{if(matcher。group(group)!null){将符合格式的数据用替换IntStream。range(matcher。start(group),matcher。end(group))。forEach(isb。setCharAt(i,));}});}returnsb。toString();}}
  然后将我们自定义的MaskingPatternLayout配置在Appender中:encoderclassch。qos。logback。core。encoder。LayoutWrappingEncoderlayoutclasscom。heiz123。log。layout。MaskingPatternLayout!自定义layoutmaskPatternaddresss:s(。?)maskPattern!json地址格式maskPattern((1d{2})d{8})maskPattern!手机号格式maskPattern(ww。w)maskPattern!邮箱格式Patternd{HH:mm:ss。SSS}5levellogger{80}msgnPatternlayoutencoderappender
  然后我们来测试一下打印结果,使用如下代码模拟用户数据输出:privatestaticvoidtestLog(){MapString,StringusernewHashMap();user。put(userid,123456);user。put(mobile,18888888888);user。put(address,朝阳区百子湾街道某小区1单元101);user。put(city,北京市);user。put(country,中国);user。put(email,heiz123163。com);log。info(customerinfo:{},JSON。toJSONString(user));}
  执行后输出结果如下:com。heiz123。study。StudyApplicationcustomerinfo:{country:中国,address:,userid:123456,city:北京市,mobile:,email:}
  嗯,达到了数据脱敏的目的。并且我们可以在配置文件中添加不同的正则表达式,对不同格式的信息进行脱敏。实现原理
  俗话说要知其然,知其所以然。
  为什么在Appender中添加一个自定义Layout就可以做到脱敏呢?我通过阅读源码,给他家整理了一个Logback日志输出的流程图,方便大家理解。
  在我们调用log。debug()或者log。info()以及其他级别的日志方法时,会按照上图中的流程执行。
  红色字体部分的方法,就会调用到Encoder中的layout的doLayout(Event),也就是我们配置文件中配置的自定义Layout。
  最后
  以上就是本期的所有内容,主要跟大家讲解如何通过自定义PatternLayout,对logback输出的敏感日志进行脱敏,防止数据泄露。
  如果对你有所帮助,希望能给点个赞,就是对我最大的鼓励啦。
投诉 评论 转载

倪妮杨幂狂爱格子衬衫,那么如何才能搭配好方方正正的格纹衬衫?这两年格纹系列的衣服一直都比较受欢迎,而且格子衬衫也是属于百搭的一件单品,要想搭好格子衬衫并不难,不信你来看。格子衬衫当外套穿是最混搭的,可以说是随便搭,当然,前提是格子……阜新和朝阳哪里更适合居住?相比较而言,朝阳更好一些。现在朝阳的交通便利,长深高速和锦朝高速路好人少,县县通高铁。气候也适宜,极热和极寒的天气都不超过二十天。现在朝阳承接了很多北京迁移的项目,就业机会也比……中矿资源将向韩国SKOn子公司供应约1。9万吨单水氢氧化锂中证智能财讯中矿资源(002738)1月6日晚间公告,近日,公司全资子公司江西东鹏新材料有限责任公司与爱思开新能源(上海)有限公司签订销售合同,前者将在2023年至2025年期……湖南建核电站能确保核电安全吗?十年前,湖南曾经在桃花江核电站,岳阳市华容县东山镇的小墨山核电站要规划和核电站,但是当时恰逢日本福岛核电站出事,民间舆论反对声浪也很大,当时迫于各种压力,内陆核电站项目陆续停止……信息安全无小事!手把手教你日志脱敏场景我们开发的程序迟早有一天都会上线到生产环境运行,但是没有人能保证自己的代码100不出BUG(别抬扛,真没BUG是代码写的少)当我们线上出BUG之后,最常见的定位……人民日报解析八月主要经济指标国民经济延续恢复发展态势人民日报作者陆娅楠工业生产有所回升,服务业生产指数增速比上月加快1。2个百分点,社会消费品零售总额增速比上月加快2。7个百分点9月16日,国家统计局公布8月国民经济运行情……年迈奶奶与孙女走失工作人员照料女童帮她找回家人图说:站长帮助女孩找到家人来源车站供图新民晚报讯(记者徐驰)昨天上午10时许,一名小女孩在轨交12号线宁国路站内独自徘徊。车站服务中心工作人员发现异常后,上前询问情况。经……天冷也不怕,让吃的喝的保温更持久,大宇暖暖垫2。0体验每当气温下降,在家办公就觉得凉飕飕的,有时忙起来,连早餐和豆浆都没时间喝就凉了!想要热一下非常麻烦,如果是桌面上有一个可以随时温热的产品就太好了!无论是粥、茶、还是饮品,都能随……现实版三十而已半个名媛圈的都来了,郭晶晶被冷落了?文丨安小鹿图丨来源于网络上周,名媛冯余慕庄(ColleenYu)办了场贵妇聚会,地点直接选在奢华庄园里。这场庄园派对,由冯余慕庄跟梵克雅宝共同举办,受邀嘉宾个个来头……十一假期我在特斯拉工厂上班工资按3倍计算,1天能领约1200本文来源:时代周报作者:齐鑫对特斯拉而言,交付一直是横亘在眼前的关键问题。据媒体报道,特斯拉预计在本季度末汽车交付量会非常高,并要求所有员工协助完成季末交付任务,甚……促消费新举措酝酿推出三领域料成发力重点为进一步促消费,国家发改委新闻发言人孟玮日前透露,正加快研究推动出台政策举措,积极打造消费新场景,促进消费加快复苏。专家认为,加力促消费的政策信号正在释放。酝酿出台的促消……新款宝马Z4官图发布!外观小改,国内参考价48。88万元起日前,宝马官方正式发布了新款宝马Z4的官图。作为中期改款车型,新车针对外观部分细节以及功能配置进行了调整,而在动力方面则继续搭载2。0T涡轮增压直列四缸和3。0T涡轮增压直列六……
经济学者对于房地产调控政策的有效性分析及优化研究唐朝诡事录四集一案!这古装悬疑剧绝了求求你,别再读错我的姓!这就是李某和李女士的区别,现在连马赛克都开始区分颜值了发射流程再缩短长二丁火箭成功发射遥感三十六号卫星刚刚!深圳重磅调整公交地铁药店公园等不再查核酸!凭绿码通行广王毅同柬埔寨副首相兼外交大臣布拉索昆举行会谈飞天茅台酒出厂价是多少钱?和零售价区别到底有多大?3款武汉热干面测评,筋道好吃又便宜,一日三餐吃它都适合彩票行业到底有没有黑幕?你怎么看?帝喾有几个儿子帝喾的儿子都不是亲生的吗大专军校毕业干什么?
金鱼冬天怎么换水,换水时要注意什么如何打开软键盘四个方法轻松搞定图文尴尬而坚强的微商们,坚信微商一定拥有美好的明天大样造句用大样造句大全简析语文教学中的人文关怀介绍粽子英语作文(通用4篇)越存钱越穷我们如何一步步陷入贫困陷阱湖北发挥地质作用助推乡村振兴冬天为什么要给宝宝补充维生素涉及达州广安,西渝高铁全线开工!传承1800年的方子,既能内服又能泡脚,扫尽体内潜伏的寒邪热 唐僧母亲被霸占18年看不起唐朝女性?这个情节非常不合理

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找江西南阳嘉兴昆明铜陵滨州广东西昌常德梅州兰州阳江运城金华广西萍乡大理重庆诸暨泉州安庆南充武汉辽宁