Redact passwords in error messages (#145)

Fixes #144
This commit is contained in:
Adrian Macneil 2020-07-19 15:04:45 -07:00 committed by GitHub
parent 2b61b4375a
commit 11c251bd25
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 1 deletions

11
main.go
View file

@ -5,6 +5,7 @@ import (
"log"
"net/url"
"os"
"regexp"
"github.com/joho/godotenv"
"github.com/urfave/cli"
@ -19,7 +20,8 @@ func main() {
err := app.Run(os.Args)
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "Error: %s\n", err)
errText := redactLogString(fmt.Sprintf("Error: %s\n", err))
_, _ = fmt.Fprint(os.Stderr, errText)
os.Exit(2)
}
}
@ -219,3 +221,10 @@ func getDatabaseURL(c *cli.Context) (u *url.URL, err error) {
return url.Parse(value)
}
// redactLogString attempts to redact passwords from errors
func redactLogString(in string) string {
re := regexp.MustCompile("([a-zA-Z]+://[^:]+:)[^@]+@")
return re.ReplaceAllString(in, "${1}********@")
}