在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函数,它接受一个字符串参数,并使用正则表达式替换敏感信息。我们为电子邮件地址、电话号码和信用卡号定义了不同的正则表达式模式。然后,我们在记录日志之前调用这个函数来脱敏敏感信息。
注意:在实际应用中,您可能需要根据实际需求调整正则表达式以匹配您的敏感信息。