有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

spring boot Checkmarx Java修复程序,用于日志伪造清理用户输入

有人能在下面的getCourses方法中建议courseType变量所需的正确消毒/验证过程吗。我用这个变量来写日志文件

我试过HtmlUtils。HtmlEscape(),但未获得预期结果

谢谢

@RequestMapping(value = "/retriveCourses", method = RequestMethod.GET)
@ResponseBody
public List<Course> getCourses(@RequestParam(value = "courseType", required = false) String courseType) {

}

共 (2) 个答案

  1. # 2 楼答案

    在这种情况下,Checkmarx工具似乎是正确的

    “伪造日志”漏洞意味着攻击者可以设计安全敏感操作的日志,并提供虚假的审计线索,可能涉及无辜用户或隐藏事件

    使用htmlEscape时,将转义一些特殊字符:

    • &amplt;表示<符号
    • &ampgt;代表>符号
    • &ampamp;表示&符号
    • &ampquot;表示"标记

    它不会转义或删除为保持日志完整性而必须避免的新行/下线/制表符

    避免原木锻造的最佳实践建议如下:

    1. 确保更换所有相关的危险人物。例如:

      cleanInput = input.replace('\t', '-').replace('\n', '-').replace('\r', '-');

    2. 验证所有输入,无论其来源如何。验证应基于白名单。只接受符合指定结构的数据,而不是拒绝坏模式。检查:数据类型、大小、范围、格式、预期值

    希望这能解决你的问题