java - 如何解决 CWE 117 问题

标签 java veracode

我的产品中报告了 CWE 117 问题。

CWE 117 问题是软件没有正确清理或错误地清理写入日志的输出,我得到的一种可能的解决方案是在日志记录时添加以下内容。

String clean = args[1].replace('\n', '_').replace('\r', '_');

log.info(clean);

我的问题是 log4j 中是否有任何中心位置可以通过单个更改解决此问题?

最佳答案

它是Layout负责序列化日志消息,换行符转换代码就在这里。

我建议创建您自己的 PatternLayout 子类来执行转换。这也在 Log4j 邮件列表上进行了讨论 here .这是该线程中建议的解决方案的略微修改版本:

import org.apache.log4j.PatternLayout;
import org.apache.log4j.spi.LoggingEvent;

public class NewLinePatternLayout extends PatternLayout {

    public NewLinePatternLayout() { }

    public NewLinePatternLayout(String pattern) {
        super(pattern);
    }

    public boolean ignoresThrowable() {
        return false;
    }

    public String format(LoggingEvent event) {
        String original = super.format(event);

        // Here your code comes into play
        String clean = original.replace('\n', '_').replace('\r', '_');

        StringBuilder sb = new StringBuilder(clean);

        String[] s = event.getThrowableStrRep();
        if (s != null) {
            for (int i = 0; i < s.length; i++) {
                sb.append(s[i]);
                sb.append('_');
            }
        }
        return sb.toString();
    }
}

相关问题(可能有用的答案):

关于java - 如何解决 CWE 117 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912182/

相关文章:

java - XSD "property already defined"

java - 在 FreeMarker 中发出错误信号

java - 返回实例时设置实例的变量

asp.net-mvc - MVC 安全违规 - 动态确定的对象属性的不正确控制修改

.net - 在我按照 OWAPS 和 Roslyn Security Guard 的建议应用解决方案后,Veracode 仍然报告操作系统命令注入(inject)问题

veracode - 如何使用错误消息修复网页(基本 XSS)中与脚本相关的 HTML 标签的不当中和?

java - 如何解决: Plaintext Storage of a Password

java - 在 Android Java 中使用 wait/notify 是一个好习惯吗?

java - 使用Parse.com指针查询两个类的数据,指针值异常

java - Facebook 身份验证 : HttpServletResponse. sendRedirect(URL) 与直接在浏览器中输入 URL 不同吗?