如何在Logback中避免CRLF(回车和换行)-CWE 117

use*_*863 6 security logback carriage-return linefeed log-forging

我正在使用Logback,并且在记录用户参数时需要避免CRLF(回车和换行)。
我试图在静态地图PatternLayout.defaultConverterMap上添加扩展了ClassicConverter的类,但是没有用。

谢谢,

bed*_*rin 3

您应该按照logback 文档中的描述创建自定义布局

自定义布局:

package com.foo.bar;

import ch.qos.logback.classic.PatternLayout;
import ch.qos.logback.classic.spi.ILoggingEvent;

public class RemoveCRLFLayout extends PatternLayout {

    @Override
    public String doLayout(ILoggingEvent event) {
        return super.doLayout(event).replaceAll("(\\r|\\n)", "");
    }

}
Run Code Online (Sandbox Code Playgroud)

登录配置:

<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    <layout class="com.foo.bar.RemoveCRLFLayout">
        <pattern>%d %t %-5p %logger{16} - %m%n</pattern>
    </layout>
</encoder>
Run Code Online (Sandbox Code Playgroud)