Spring Security 会自动从日志中清除潜在的密钥、秘密和令牌

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

最近从 Spring Security 5.3.4 升级到 5.7.6,从那时起,我看到某些关键字后的日志中的数据被删除。例如,当日志消息包含“key”、“token”或“secret”等单词时,这些关键字后面的字符串将被擦除。

一些例子...

Looking up record by key word

变成

Lookup up record by key***
o.s.w.s.MyTokenAuthorizationService successful login, continue

变成

o.s.w.s.MyToken***, continue

理解这样做的目的是为了防止记录机密、身份验证令牌和密钥,但 Spring 通常不准确,并且会擦除调试所需的数据

例如

Logging Request: GET mysite.com/fetchData?primaryKey=col1&value=77

变成

Logging Request: GET mysite.com/fetchData?primaryKey***

有什么方法可以防止 Spring 擦除这些数据吗?

已尝试搜索文档以查找任何提及此行为或如何禁用它的信息,但没有成功。

为了验证这些关键字是否确实触发了数据清理,请尝试将“key”替换为“k3y”,将“token”替换为“t0ken”,将“secret”替换为“s3cret”。一切都记录下来,无需擦洗。

spring logging key token data-scrubbing
1个回答
0
投票

在 Spring Security 5.7 中,引入了“清理日志输出中的敏感数据”。这会自动清理日志中的敏感数据,以防止意外泄露,例如密码、令牌等...... 要禁用此功能并防止 Spring 清理数据,请在 Spring Security 配置中配置 logSanitizer 属性。

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // Your security configuration
        http.authorizeRequests()
            // ...
            .and()
            .logSanitizer(new NoOpSanitizingLogMessageBuilder());
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.