提问人:Vishnu Shinde 提问时间:1/2/2023 最后编辑:Vishnu Shinde 更新时间:1/2/2023 访问量:1017
org/slf4j/Logger.info(Ljava/lang/String;ljava/lang/对象;V 可用于将 CRLF 字符包含在日志消息中
This use of org/slf4j/Logger.info(Ljava/lang/String;Ljava/lang/Object;)V might be used to include CRLF characters into log messages
问:
我在代码中记录请求正文参数时遇到了这个声纳问题(安全 - 日志的潜在 CRLF 注入)。
public ResponseEntity<SomeDto> someMethod(@RequestBody User user) {
log.info("user received as --> {}", user);
}
如何解决此问题?谢谢。
答:
1赞
Andrey B. Panfilov
1/2/2023
#1
这真是令人讨厌的警告。问题是希望你写出愚蠢的代码,比如:sonarqube
sonarqube
public ResponseEntity<SomeDto> someMethod(@RequestBody User user) {
log.info(
"user received as --> {}",
String.valueOf(user)
.replace("\r", "\\r")
.replace("\n", "\\n")
);
}
这显然是不可接受的。
如果安全团队确实认为日志中的 CR/LF 字符是真正的安全问题,则唯一正确的方法是:
禁用相应的检查
sonarqube
使用以下方法之一正确设置日志记录子系统:
利用 in - 例如,将所有日志写入 JSON:
output encoding
logback
使用
security-logging-logback
库,这里是相应配置的示例logback
评论