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

时间:2014-08-23 12:46:00

标签: c# security logging log4net code-injection

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

这可能会导致日志注入攻击(请参阅this),允许用户将任意内容放入日志文件,虚假日志条目,甚至尝试攻击监控用户/系统。

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

注意:我使用的是log4net和C#,但我认为主题不仅限于特定的环境和平台。

1 个答案:

答案 0 :(得分:2)

TL; DR我想我们可以说没有符合eveyone需求的消毒方法。

从OWASP链接:

  

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

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

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