任何人都可以建议以下 getCourses 方法中的 courseType 变量所需的正确清理/验证过程。我正在使用该变量写入日志文件。
我尝试过 HtmlUtils.HtmlEscape() 但没有得到预期的结果。
Thanks!
@RequestMapping(value = "/retriveCourses", method = RequestMethod.GET)
@ResponseBody
public List<Course> getCourses(@RequestParam(value = "courseType", required = false) String courseType) {
}
在这种情况下,Checkmarx 工具似乎是正确的。
“日志伪造”漏洞意味着攻击者可以设计安全敏感操作的日志并建立虚假的审计跟踪,从而可能牵涉无辜用户或隐藏事件。
使用时htmlEscape
会转义一些特殊字符:
-
&lt;
代表<
sign.
-
&gt;
代表>
sign.
-
&amp;
代表&
sign.
-
&quot;
代表"
mark.
它不会转义或删除为了保持日志完整性而必须避免的换行符/EOL/制表符。
避免日志伪造的最佳实践建议是:
-
确保替换所有相关的危险字符。例子:
cleanInput = input.replace('\t', '-').replace('\n', '-').replace('\r', '-');
验证所有输入,无论来源如何。验证应基于白名单。仅接受符合指定结构的数据,而不拒绝不良模式。检查:数据类型、大小、范围、格式、预期值。
希望这能解决您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)