Эта проблема особенно актуальна для финтехов, потому что из кафки в базу то и дело гоняются джсончики с номерами карт и cvv 💳
Могу дать две наводки, чтобы избежать велосипедостроения, можете не благодарить ❤️
Первая
Если вы вдруг, используете Serilog, то обратите внимание на Serilog.Enrichers.Sensitive
Эта надстройка позволяет очень гибко настроить перехват и обработку секретных данных
Например, можно банально маскировать по имени свойства:
var logger = new LoggerConfiguration()
.Enrich.WithSensitiveDataMasking(options => options.MaskProperties.Add("pan"))
.WriteTo.Console()
.CreateLogger();
Вторая
Воспользоваться решением из джентельменского набора Microsoft под названием Microsoft.Extensions.Compliance.Redaction
Там немного другой подход из коробки - данные либо вычищаются, либо заменяются своей HMAC256 зашифрованной версией
Подробный обзор на инструмент хорошо написал Andrew Lock, повторять за ним не буду 👏