精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

封裝一個方法,使用 C# 正則表達式巧妙隱藏 JSON 字符串中的敏感信息,守護密碼安全

admin
2024年12月30日 12:21 本文熱度 665

前言

嗨,大家好!

想象一下,你正在開發一款應用程序,突然遇到了這樣一個棘手的問題:

你需要將對象序列化為 JSON 字符串并打印到日志中進行調試,但這其中包含了敏感的密碼信息。

如果直接將這些密碼暴露在日志里,不僅違反了安全最佳實踐,還可能引發嚴重的隱私泄露風險。

這時候,你可能會想到幾種解決方案:

  • 忽略序列化:將密碼字段標記為 [JsonIgnore] 或類似的屬性,但這可能會影響到其他業務邏輯,特別是當實體類位于較低層次時。

  • 手動打印字段:逐一打印對象的字段內容,但這顯然非常麻煩,尤其是當實體類包含大量字段時,或者實體類有變動時。

那么,有沒有一種更優雅、影響最小的方式來解決這個問題呢?

答案是肯定的!

今天,我們可以利用 C# 的正則表達式,封裝編寫一個簡潔而強大的方法,自動隱藏 JSON 字符串中的密碼字段。

這種方式不僅實現起來簡單,而且對現有代碼的影響極小,非常適合在實際項目中應用。

讓我們一起動手試試吧!

封裝方法

下面是我封裝的方法,通過正則表達式,它能夠智能地識別并隱藏 JSON 字符串中的密碼字段,留意代碼中的注釋

/// <summary>
/// 隱藏Json字符串中的密碼
/// </summary>
/// <param name="jsonData">需要處理的 JSON 字符串</param>
/// <returns>處理后的 JSON 字符串,其中密碼字段已被隱藏</returns>
public static string HidePassword(string jsonData)
{
    string newJsonData = null;

    // 定義替換模式,使用命名捕獲組 "str" 來匹配鍵名
    string replacement = "\"${str}\":\"********\"";

    // 匹配包含 "password" 的鍵名(不區分大小寫)
    // 替換為星號掩碼
    string pattern1 = "\"(?<str>([A-Za-z0-9_]*)password)\":\"(.*?)\""

    // 使用正則表達式替換所有匹配項
    newJsonData = Regex.Replace(jsonData, pattern1, replacement, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);

    // 如果有多個不同的密碼字段(如 pwd),可以繼續增加隱藏語句
    // 或者將它單獨抽出來作為一個子方法
    // string pattern2 = "\"(?<str>([A-Za-z0-9_]*)pwd)\":\"(.*?)\"";
    // newJsonData = Regex.Replace(newJsonData, pattern2, replacement, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline);

    // 返回處理后的 JSON 字符串
    return newJsonData;
}

使用示例

接下來,我們來看看如何在實際代碼中調用這個方法。

假設你有一個包含用戶名和密碼的 JSON 字符串,只需幾行代碼就可以將其密碼字段安全地隱藏起來。

class Program
{
    static void Main()
    {
        // 假設這是從某個地方獲取的 JSON 字符串
        string jsonData = "{\"username\":\"Jacky\", \"password\":\"123456\",\"Age\":35}";

        // 調用 HidePassword 方法隱藏密碼字段
        string sanitizedJson = SecurityUtil.HidePassword(jsonData);

        // 輸出處理后的 JSON 字符串
        Console.WriteLine(sanitizedJson);
    }
}

測試

按 Ctrl+F5 編譯并運行程序,你會在控制臺看到如下圖輸出:

這說明我們已經將原始密碼 123456 替換成了 ********,從而有效地保護了敏感信息

總結

這是老楊最近碰到的一個有趣的業務需求而封裝的方法。

通過使用 C# 正則表達式,我們輕松實現了隱藏 JSON 字符串中密碼字段的功能,既解決了安全隱患問題,又不影響原有的代碼,同時還保持了代碼的簡潔性和可維護性。

這個方法不僅可以用于日志記錄,還可以應用于任何需要保護敏感信息的場景。

你可以將它直接應用到你的項目中,通過這個封裝的方法,當你遇到相似的業務需求時,再也不需要浪費時間尋找合適的方法了,相信它可以幫助你大大提高工作效率!


該文章在 2024/12/30 12:28:24 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 少妇偷拍精品高潮少妇 | 亚洲av无码国产一区二区三区不卡 | 亚瑟av亚洲精品一区二区 | 国产自国产自愉自愉免费24区 | 中文区中文字幕免费看 | 欧美黑人又粗又大高潮喷水 | 亚洲一区精品中文字幕 | 99久久免费精品高清特色大片 | 专区久久综合久中文字幕 | 欧美人与禽zozzo性伦交 | 亚洲浮力影院久久久久久 | 亚洲国产空姐精品视频中文字幕 | 国产欧美亚洲日韩图片 | 国产精品沙发午睡系列990531 | 亚洲国产精品97久久 | 国产成人91 | 亚洲午夜福利在线视频 | 日本精品无码久久久久三级国产 | 亚洲一区中文字幕高清在线观看 | 91亚洲国产成人精品看片 | 插吧插吧综合网 | 亚洲国产成人精品无码区99最新章节 | 国产午夜精品理论片a级在线观看欧美一区二区三区高清视 | 国产人成综合精品亚洲 | 亚洲中文字幕无码 | 亚洲国产精品无码av老片 | 国产人妖专区在线观看 | 丰满人妻av无码一区二区三区 | 国产二区交换配乱婬 | 欧美日韩国产不卡在线观看 | 国产偷自一区二区三区 | 国产三级国产精品国产普男人 | 欧美日韩亚洲另类性爱 | 熟妇熟女乱妇乱女网站 | 国产三级片免费观看 | 蜜臀久久99精品久久久久久做爰 | 亚洲精品国产精品国自产观看 | 国产亚洲午夜高清国产拍精品 | 国产成人免费高清av | 四虎影视在线永久免费观看 | 亚洲av无码一区二区三区不卡 |