在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函數,它接受一個字符串參數,并使用正則表達式替換敏感信息。我們為電子郵件地址、電話號碼和信用卡號定義了不同的正則表達式模式。然后,我們在記錄日志之前調用這個函數來脫敏敏感信息。
注意:在實際應用中,您可能需要根據實際需求調整正則表達式以匹配您的敏感信息。