从ASP.NET核心记录中的日志中删除敏感信息



我正在使用ASP.NET核心记录抽象作为我的应用程序。

我有一个敏感的字符串列表,我想确保在发送到任何水槽时在日志中掩盖" *****"。(我正在使用Serilog-但也许甚至可以在Serilog之前插入(。

我如何将其插入ASP.NET核心记录系统中,以将所有这些敏感字符串替换为" *******",然后发送到任何水槽/作家等。

而不知道您要擦洗的内容,有一些选择。

在这个GitHub问题中有几个好主意。

总结线程:您可以使用浓度完全擦除属性的内容。您也可以使用文本格式器手动运行正则替换。

也提到了一些软件包,您可以添加以提供更多结构,以处理日志:

  • serilog.logsanitizingformatter
  • Destructurama.Tributed
  • destructurama.byignoring

我有一个类似的问题,在记录过程中我需要从对象中编辑/隐藏某些字段。

对于简洁起见,让我们假设对象是

public class User
{
   public string UserName { get; set; }
   public string Password { get; set; }
   public override string ToString()
   {  
       return base.ToString();
   }
}

现在,我们使用对象破坏性操作员(@(

与Serilog登录
User user = new User() { UserName = "u", Password = "p" };
_logger.LogWarning("value is {@val}", user);

为了隐藏密码道具,我们可以在下面设置serilog

Log.Logger = new LoggerConfiguration()
                        .WriteTo.Console(new Serilog.Formatting.Json.JsonFormatter())
                        .Destructure.ByTransforming<User>(_ => new { User = _.UserName })
                        .CreateLogger();

现在,对于对象用户的任何记录,它都不会在其中包含密码字段,或者您可以通过设置密码=&quort =&quot; ######&quot'

编辑密码字段

P.S。理想情况下,我们不应该记录任何敏感的内容,但有时我们需要记录整个对象,而某些道具不需要记录且以上是一种集中的方法来处理此类情况,而不是审查代码中的每一个提交以验证这一潜在错误。<<<<<。/p>

最新更新