Fortify:Log Forging问题解决

背景

公司上线前进行静态代码扫描,项目中出现大量Log Forging问题,需要解决大量该类问题才能上线。攻击者通过伪造请求参数(包括headers)访问服务,如果服务端直接将参数打印到日志中,攻击者就可以随意伪造日志输出结果,造成严重后果。

解决步骤

1. 自定义Converter

public class LogFilter extends ClassicConverter {
    @Override
    public String convert(ILoggingEvent event) {
       if (event.getLoggerName().startsWith("com.x.x")) { //根据package启用规则
            return vaildLog(event.getFormattedMessage());
        } else {
            return event.getFormattedMessage();
        }
    }

    /**
     * 特殊字符替换
     *
     * @param logs
     * @return
     */
    public static String convertLog(String logs) {
        List<String> list = Arrays.asList("%0a", "%0A", "%0d", "%0D", "\r", "\n");
        String converted = Normalizer.normalize(logs, Normalizer.Form.NFKC);
        for (String s : list) {
            converted = converted.replace(s, "");
        }
        return converted;
    }
}

2. logback.xml配置Converter

<configuration>标签下添加如下配置:

<conversionRule conversionWord="msg" converterClass="xxx.LogFilter" />
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值