ソースを参照

redact settings containing 'secret' besides 'password'

Ensure that settings with the word 'secret' in the name are redacted just
as ones with 'password' in the name are. For example, the Google Auth
client secret should be redacted now.
Tom Dyas 9 年 前
コミット
d557beb5f1
1 ファイル変更7 行追加2 行削除
  1. 7 2
      pkg/setting/setting.go

+ 7 - 2
pkg/setting/setting.go

@@ -169,6 +169,11 @@ func ToAbsUrl(relativeUrl string) string {
 	return AppUrl + relativeUrl
 	return AppUrl + relativeUrl
 }
 }
 
 
+func shouldRedactKey(s string) bool {
+	uppercased := strings.ToUpper(s)
+	return strings.Contains(uppercased, "PASSWORD") || strings.Contains(uppercased, "SECRET")
+}
+
 func applyEnvVariableOverrides() {
 func applyEnvVariableOverrides() {
 	appliedEnvOverrides = make([]string, 0)
 	appliedEnvOverrides = make([]string, 0)
 	for _, section := range Cfg.Sections() {
 	for _, section := range Cfg.Sections() {
@@ -180,7 +185,7 @@ func applyEnvVariableOverrides() {
 
 
 			if len(envValue) > 0 {
 			if len(envValue) > 0 {
 				key.SetValue(envValue)
 				key.SetValue(envValue)
-				if strings.Contains(envKey, "PASSWORD") {
+				if shouldRedactKey(envKey) {
 					envValue = "*********"
 					envValue = "*********"
 				}
 				}
 				appliedEnvOverrides = append(appliedEnvOverrides, fmt.Sprintf("%s=%s", envKey, envValue))
 				appliedEnvOverrides = append(appliedEnvOverrides, fmt.Sprintf("%s=%s", envKey, envValue))
@@ -197,7 +202,7 @@ func applyCommandLineDefaultProperties(props map[string]string) {
 			value, exists := props[keyString]
 			value, exists := props[keyString]
 			if exists {
 			if exists {
 				key.SetValue(value)
 				key.SetValue(value)
-				if strings.Contains(keyString, "password") {
+				if shouldRedactKey(keyString) {
 					value = "*********"
 					value = "*********"
 				}
 				}
 				appliedCommandLineProperties = append(appliedCommandLineProperties, fmt.Sprintf("%s=%s", keyString, value))
 				appliedCommandLineProperties = append(appliedCommandLineProperties, fmt.Sprintf("%s=%s", keyString, value))