用tag實作Password Mask

我其實滿驚訝目前好像沒有任何library有實作這個,或者有但是我找不到,所以我就實作了一個。別看這功能看起來很小巧簡單,這個需要對reflect有相當的認識,所以把製作心得記錄下來。

成品網址

https://github.com/Rayer/hood

需求

通常我們server boot up的時候需要印出很多log,有時候無可避免的要把整個config給印到log上,這樣會產生一個問題:要是config內含敏感資訊,如帳號跟密碼,這就會產生一些資安問題:

log.Infof("bootup with config : %+v", config)

印出來就會像這樣(標準的%+v會印出來的格式)

{Host:192.168.1.1 User:username Password:mypassword123}


顯然,這是不太恰當的,所以我們總歸來講有幾種作法

  1. 把他轉json再印,把敏感的地方用 json:"-"讓他不被印出來
  2. 實作 func String() string,把敏感資料手動by key抹除掉
Read more “用tag實作Password Mask”
Leave a comment