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) {
}
# 1 楼答案
请查看“事件集合”部分中的Logging - OWASP Cheat Sheet Series
最好的编码器仍然OWASP Java Encoder=>;解决问题2。关于@yaloner
OWASP还有一个项目可以帮助您处理日志注入OWASP Security Logging=>;解决问题1。关于@yaloner
看看他们能解决问题吗
# 2 楼答案
在这种情况下,Checkmarx工具似乎是正确的
“伪造日志”漏洞意味着攻击者可以设计安全敏感操作的日志,并提供虚假的审计线索,可能涉及无辜用户或隐藏事件
使用
htmlEscape
时,将转义一些特殊字符:&lt;
表示<
符号李>&gt;
代表>
符号李>&amp;
表示&
符号李>&quot;
表示"
标记李>它不会转义或删除为保持日志完整性而必须避免的新行/下线/制表符
避免原木锻造的最佳实践建议如下:
确保更换所有相关的危险人物。例如:
cleanInput = input.replace('\t', '-').replace('\n', '-').replace('\r', '-');
验证所有输入,无论其来源如何。验证应基于白名单。只接受符合指定结构的数据,而不是拒绝坏模式。检查:数据类型、大小、范围、格式、预期值
希望这能解决你的问题