Dot-Net
從 ASP.NET Core 日誌記錄中刪除敏感資訊
我正在為我的應用程序使用 ASP.NET Core 日誌記錄抽象。
我有一個敏感字元串列表,我想確保在發送到任何接收器時在日誌中將其屏蔽為“*****”。(我正在使用 serilog - 但也許它甚至可以在 serilog 之前插入)。
在發送到任何接收器/寫入器等之前,我如何將其插入 ASP.NET Core 日誌記錄系統以用“*******”替換所有這些敏感字元串。
在不知道您要擦洗什麼的情況下,有幾種選擇。
這個 GitHub issue中有幾個好主意。
總結執行緒:您可以使用豐富器來完全擦除屬性的內容。您還可以使用文本格式化程序手動執行正則表達式替換。
還提到了一些包,您可以添加它們以提供更多關於處理日誌的結構:
我遇到了類似的問題,我需要在記錄期間從對像中編輯/隱藏某些欄位。
為簡潔起見,我們假設對像是
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();現在對於對象的任何日誌記錄,使用者都不會在其中包含密碼欄位,或者您可以通過設置密碼=“######”來編輯密碼欄位
PS 理想情況下,我們不應該記錄任何敏感的東西,但有時我們需要記錄整個對象,其中某些道具不希望被記錄,以上是處理這種情況的集中方法,而不是審查程式碼中的每個送出來驗證這個潛在的錯誤。