【问题标题】:Safely appending user input in log file在日志文件中安全地附加用户输入
【发布时间】:2014-08-23 12:46:00
【问题描述】:
在许多情况下,开发人员希望在日志文件中包含基于用户输入的值,以便以后调查问题(即导致错误情况的输入)。
这可能导致日志注入攻击(请参阅this),允许用户在日志文件中放置任意内容、伪造日志条目,甚至尝试攻击监控用户/系统。
是否有一种标准方法来清理/编码/转义用户输入以附加到日志文件?
注意:我使用的是 log4net 和 C#,但我认为主题不限于特定的环境和平台。
【问题讨论】:
标签:
c#
security
logging
log4net
code-injection
【解决方案1】:
TL;DR 我认为我们可以说没有一种 ür-sanitize 方法可以满足每个人的需求。
来自 OWASP 链接:
阻止此类攻击的最有效方法是确保记录的任何外部输入都遵守关于可接受字符的严格规则。与往常一样,白名单样式检查比黑名单样式检查要好得多。
但是从 OWASP 中寻找推荐的清理程序主要返回来自 data validation 页面的信息。这听起来很明智,因为输入清理将取决于用户授权的内容、记录的内容、查看的位置等...
在给定的示例中,删除换行符是明智的,但可能不足以记录多行输入。白名单取决于您的功能需求。