温馨提示×

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

小樊
51
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