C# 在日志文件中安全地附加用户输入

C# 在日志文件中安全地附加用户输入,c#,security,logging,log4net,code-injection,C#,Security,Logging,Log4net,Code Injection,在许多情况下,开发人员希望在日志文件中包含基于用户输入的值,以便稍后调查问题(即,是什么输入导致了错误情况) 这可能导致日志注入攻击(请参阅),允许用户在日志文件中放入任意内容、伪造日志条目,甚至尝试攻击监控用户/系统 是否有标准的方法来清理/编码/转义用户输入以附加到日志文件 注意:我使用的是log4net和C#,但我认为这个主题并不局限于特定的环境和平台;博士,我认为我们可以说,没有一种消毒方法能满足每个人的需要 从OWASP链接: 阻止此类攻击的最有效方法是确保记录的任何外部输入都遵守严格

在许多情况下,开发人员希望在日志文件中包含基于用户输入的值,以便稍后调查问题(即,是什么输入导致了错误情况)

这可能导致日志注入攻击(请参阅),允许用户在日志文件中放入任意内容、伪造日志条目,甚至尝试攻击监控用户/系统

是否有标准的方法来清理/编码/转义用户输入以附加到日志文件


注意:我使用的是log4net和C#,但我认为这个主题并不局限于特定的环境和平台;博士,我认为我们可以说,没有一种消毒方法能满足每个人的需要

从OWASP链接:

阻止此类攻击的最有效方法是确保记录的任何外部输入都遵守严格的规则,即哪些字符是可接受的。一如既往,白名单样式检查比黑名单样式检查更可取

但是从OWASP中寻找推荐的消毒程序主要是从页面返回信息。这听起来很合理,因为输入清理将取决于用户授权的内容、记录的内容、查看的位置等

在给定的示例中,删除换行符是明智的,但可能不足以记录多行输入。白名单取决于您的功能需求