根据要求防止 CRLF 漏洞 header

Preventing CRLF vulnerability on request header

我正在尝试修复我的应用程序记录器上的 CRLF 漏洞,我目前正在记录我的 http 请求路径,有没有办法验证这个?删除我的请求路径上的任何 CR LF 注入我当前使用 c# 作为我的编程语言

这是我记录错误时的核心代码

 _logger.LogInformation(e, "InactiveTenantException caught during api request {RequestPath} {Tenant} {User}", context.Request.Path, currentUser?.Tenant, currentUser?.LoginEmail);

注意。目前使用 Microsoft.Extensions.Logging 作为我的记录工具

由于您使用的是 PathString that is returned by HttpContext.Request.Path,因此您得到的是转义字符串:

the path string escaped in a way which is correct for combining into the URI representation

因此,您的代码中不应存在 CRLF 漏洞。

如果您发出类似 /foo%5Cnbar 的请求,其编码为 /foo\nbar 那么您将在日志文件中得到 /foo%5Cnbar 而不是两行。