专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

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

  场景
  我们开发的程序迟早有一天都会上线到生产环境运行,但是没有人能保证自己的代码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。layout;importch。qos。logback。classic。PatternLayout;importch。qos。logback。classic。spi。ILoggingEvent;importjava。util。ArrayList;importjava。util。List;importjava。util。regex。Matcher;importjava。util。regex。Pattern;importjava。util。stream。IntStream;authoryuriy。luClassNameMaskingPatternLayoutDescriptiondate2022126publicclassMaskingPatternLayoutextendsPatternLayout{privatePatternmultilinePattern;privatefinalListStringmaskPatternsnewArrayList();publicvoidaddMaskPattern(StringmaskPattern){maskPatterns。add(maskPattern);multilinePatternPattern。compile(String。join(,maskPatterns),Pattern。MULTILINE);}OverridepublicStringdoLayout(ILoggingEventevent){returnmaskMessage(super。doLayout(event));}privateStringmaskMessage(Stringmessage){if(multilinePatternnull){returnmessage;}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输出的敏感日志进行脱敏,防止数据泄露。
  如果对你有所帮助,希望能给点个赞,就是对我最大的鼓励啦。

雪天的思考怎么活着!初五那天,多伦多下了一场大雪,雪量大的似乎想把这一年的雪一次倾泻完。说实话雪景很美,我却欣赏不起来。人眼看到的和你内心展现的似乎都靠心境才能判断是否美好。车祸后家里就一个电车,一到真正的情人,一生相伴,不离不弃这一生,寻寻觅觅,只为遇到一个两心相知两情相悦的人。那种情意缱绻,灵魂交织的感觉,让人深深迷恋。有人说,当今社会,哪里还有真正的爱情,不过是权衡利弊后的选择。不可否认,很多人面对感我东北女人,41岁到美国开按摩店年入百万,上门服务时经常被刁难这是我们讲述的第1481位真人故事我叫郑玉慧三猴子在美国,来自辽宁省辽阳市,从事美容行业,漂泊在日本和美国22年。我从小性格顽皮,人称三猴子。我不甘过穷苦的日子,自己借钱到日本留学将700万平方公里土地,全部交给中国开发,俄罗斯难道不怕吗?提到和我国关系最好的邻国,除了巴基斯坦之外,很多人第一反应,都会想到俄罗斯。这些年来,我国和俄罗斯一直都保持着非常不错的关系,而且在很多领域,也都展开了合作,绝对称得上是强强联合。30!德约科维奇轻松挺进决赛,冲击澳网冠军,美国人没有威胁头条创作挑战赛1月27日下午,澳网男单半决赛进行,第一场对决来自德约科维奇对阵保罗,比赛备受关注。作为赛事夺冠热门,小德优势明显,有望继续形成压迫,拿到胜利。第一盘,小德实现51的美国北约骑虎难下,援助乌克兰还需花费6千亿美国北约对乌克兰的武器援助,已经骑虎难下,被俄罗斯牵着鼻子跑马拉松。如果2。26万亿美元的战争消耗,还败给了阿富汗,仅凭1200亿,美国又怎能打败俄罗斯。一,对乌克兰的援助开始打太贺岁档火了!进击的小破球为何值得喝彩?半月谈评论员孙丽萍兔年新春,流浪地球2满江红上映数日即以逾10亿元票房一路领跑,红红火火的贺岁档为国人铺陈开了久违的影视盛宴,为中国电影产业释放强劲复苏信号。流浪地球2也引发了前所爸妈塞的返程后备厢,百公里油耗得多1L昨天是春节假期最后一天,不少朋友拎着装满家乡味的大包小裹踏上了返程列车。在辽宁丹东火车站,旅客们的包裹十分统一,几乎人均手拎白色泡沫箱,充满神秘感。春节期间正是丹东草莓下果的时间,宋庆龄诞辰130周年!让我们重温国之瑰宝这些经典话语她被誉为国之瑰宝,也是中国千千万万孩子的母亲她是伟大的爱国主义民主主义国际主义和共产主义战士,也是二十世纪举世闻名的伟大女性。她就是中华人民共和国的缔造者之一国家名誉主席中国国民党戴副局丈夫李瑞镖,看似简单,实则非常不一般!这六点可充分说明从2023年1月份以来,桃色事件频频被曝光,过去有关桃色新闻,基本都发生于娱乐圈。但是,这一回与过去有很大的区别,密集发生于官场,这让事件更具趣味。成都女副区长的不雅聊天记录,还是曝辽宁女排将迎日本籍主教练!丁霞也会复出,天津女排要有对手了众所周知,在网上曝光赵勇将卸任辽宁女排主教练一职进入中国女排教练组之后,广大球迷们对于辽宁女排新任主教练的相关消息也是非常关注。另外,没有参加新赛季排超联赛的丁霞是否将要复出也是让
FIFA女足世界排名更新朝鲜遭除名中国队升至亚洲第三北京时间3月24日,国际足联更新了女足国家队世界排名,中国女足升至世界第13名,位列亚洲第三,前亚洲第一朝鲜因多年未参加比赛活动遭到暂时除名。此次更新中最大的变动就是亚洲第一的易主小马丁价值飙升!火箭魔术商讨2换1交易,萨格斯辅佐杰伦格林?谁是火箭队本赛季进步最快的球员,答案是小波特吗?可能很多人都不认可这个说法,尽管他打出了场均18。6分5。6篮板5。9助攻的漂亮数据,但场均失误也高达3。3次,至于组织串联全队方面不整顿经纪公司和经纪人,中国足球还会继续衰落哥哥在足协当官后,弟弟马上注册皮包经纪公司,然后从足校偷小球员运作到国外,再以留洋球员身份高价卖到国内俱乐部。别说暗地里拿黑钱了,就算是正大光明的拿经纪中介费就不是小数。最近,终于滴滴在国内还有未来吗?滴滴在中国的市场份额约为90,但据统计,目前已经有230个打车应用在同时跟它竞争。其中有很多还是中国的大型汽车厂商支持的,如曹操专车就是吉利汽车支持的,滴滴面临的竞争对手不仅仅是汽我国芯片行业要多久才可以赶上美国?我国芯片行业要多久才可以赶上美国?这是一个伪命题,因为没有证据证明我国芯片行业一定能够赶上美国。中国有5000年的发展历史,中国地大物博,资源丰富,任何时期都具备发现研发芯片的客观为什么越来越多的人使用智能家居?能家居听上去是一个时髦词汇,但实际上已经开始走入人们的生活。各种智能家居产品不断发展普及,逐渐走入普通家庭,为人们带来更方便的生活体验。1。改进家庭安全状况通过监控摄像头单品连接系工科男,需求是一部能足够达到编程开发图像处理建模渲染等功能。有什么笔记本可以推荐?唯一推荐准系统!笔记本渲染够呛,不是算力不够而是散热不够,长时间满负荷硬件折寿已经没有了。蓝天顶级准系统可以安装两块cpu和两块高端显卡吧(要不就是一块cpu)。差不多能够满足你的开光是什么意思?寺庙开过光的东西,真的灵吗?开光这个词语大家肯定经常听到,不管是在影视作品当中还是在现实生活里,我们经常看到有人到寺庙中寻找得道高僧,给自己的随身物品开光。那到底什么是开光呢?进行开光又有什么意义呢?开光最早贪官贪的钱财转到海外其家人手里,就追不回来了?在这个物欲横飞的年代,人的贪念使人性扭曲。李铁老婆拒绝退还高达2。7亿元的赃款,跑到国外要和李铁离婚,因为结婚登记是在英国办的,同时李铁名下的所有财产都归女方所有。但凡一个贪官被抓打篮球不能缺李梦等同于打仗不能缺军官?头条创作挑战赛妻子曝前女篮领队张隆出轨李梦李梦事件持续发酵,网友们众说纷纭,一堆支持她的人让我三观尽毁!更有甚者竟然做出这样评论我问你们要是打仗有个人打仗可以就是平常行为道德不好,陈戌源被抓后,归化球员纷纷回国!足协调整路线,未来还有好消息随着费南多抵达济南并有望加盟山东泰山,这名曾被誉为最强归化的归化球员,距离重返中国足坛只剩下一步之遥。费南多也是继艾克森之后,又一名选择回国的归化球员,在某种程度上,这意味着在陈戌
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网