为什么log4j中的串联容易受到攻击?

问题描述 投票:0回答:1

这里:https://logging.apache.org/log4j/2.x/manual/getting-started.html#best-practice-concat

他们这样说关于在 log4j 中使用字符串连接:

更重要的是,这种方式很容易受到攻击!想象一下用户ID 由用户提供以下内容:占位符 对于不存在的参数触发失败:{} {} {dangerousLookup}

有人可以解释为什么这很危险吗?我不明白字符串连接与这个“dangerousLookup”有什么关系。

java log4j
1个回答
0
投票

我认为文档非常清楚

想象一下用户提供的 userId 包含以下内容: 用于触发失败的不存在参数的占位符:{} {}

如果您有以下记录器并且您通过了以上

userId

LOGGER.info("failed for user ID: " + userId);

代码执行将中断,因为记录器将具有

"failed for user ID: placeholders for non-existing args to trigger failure: {} {} "
作为内容,并且记录器将抛出未提供 2 个参数的异常。

© www.soinside.com 2019 - 2024. All rights reserved.