溫馨提示×

Golang日志中敏感信息如何脫敏

小樊
47
2025-07-22 12:20:26
欄目: 編程語言

在Golang中,為了保護敏感信息,我們可以在記錄日志之前對敏感信息進行脫敏處理。以下是一個簡單的示例,展示了如何在Golang日志中脫敏敏感信息:

package main

import (
	"fmt"
	"log"
	"os"
	"strings"
)

// maskSensitiveInfo 脫敏敏感信息
func maskSensitiveInfo(info string) string {
	// 定義敏感信息的正則表達式
	maskPattern := `(?i)(\b\d{16}\b|\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b)`
	mask := "****"

	// 使用正則表達式替換敏感信息
	maskedInfo := re.ReplaceAllString(info, mask)

	return maskedInfo
}

func main() {
	// 示例數據
	email := "example@example.com"
	phone := "13800138000"
	creditCard := "1234-5678-9012-3456"

	// 脫敏敏感信息
	maskedEmail := maskSensitiveInfo(email)
	maskedPhone := maskSensitiveInfo(phone)
	maskedCreditCard := maskSensitiveInfo(creditCard)

	// 記錄日志
	log.Printf("Email: %s\n", maskedEmail)
	log.Printf("Phone: %s\n", maskedPhone)
	log.Printf("Credit Card: %s\n", maskedCreditCard)

	// 將日志輸出到文件
	logFile, err := os.OpenFile("log.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
	if err != nil {
		log.Fatalf("error opening log file: %v", err)
	}
	defer logFile.Close()

	log.SetOutput(logFile)
	log.Printf("Email: %s\n", maskedEmail)
	log.Printf("Phone: %s\n", maskedPhone)
	log.Printf("Credit Card: %s\n", maskedCreditCard)
}

在這個示例中,我們定義了一個maskSensitiveInfo函數,它接受一個字符串參數,并使用正則表達式替換敏感信息。我們為電子郵件地址、電話號碼和信用卡號定義了不同的正則表達式模式。然后,我們在記錄日志之前調用這個函數來脫敏敏感信息。

注意:在實際應用中,您可能需要根據實際需求調整正則表達式以匹配您的敏感信息。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女