Checkmarx Java修复日志伪造-清理用户输入
任何人都可以在以下getCourses方法中建议对courseType变量所需的正确的清理/验证过程。我正在使用该变量写入日志文件。
我已经尝试过HtmlUtils.HtmlEscape(),但是没有得到预期的结果。
谢谢!
@RequestMapping(value = "/retriveCourses", method = RequestMethod.GET)@ResponseBody
public List<Course> getCourses(@RequestParam(value = "courseType", required = false) String courseType) {
}
回答:
在这种情况下,Checkmarx工具似乎是正确的。
“日志伪造”漏洞意味着攻击者可以设计对安全敏感的操作的日志,并放置错误的审核跟踪,从而可能牵扯到无辜的用户或隐藏事件。
使用时htmlEscape
会转义一些特殊字符:
&lt;
代表<
标志。&gt;
代表>
标志。&amp;
代表&
标志。&quot;
代表"
商标。
它不会转义或删除为了保持日志完整性而必须避免的换行符/ EOL /制表符。
避免日志伪造的最佳实践建议是:
- 确保替换所有相关的危险字符。例:
cleanInput = input.replace('\t', '-').replace('\n', '-').replace('\r', '-');
- 验证所有输入,无论来源如何。验证应基于白名单。仅接受适合指定结构的数据,而不拒绝不良模式。检查:数据类型,大小,范围,格式,期望值。
希望可以解决您的问题。
以上是 Checkmarx Java修复日志伪造-清理用户输入 的全部内容, 来源链接: utcz.com/qa/432481.html