MCPcopy Create free account
hub / github.com/diillson/chatcli / maskSensitiveInText

Function maskSensitiveInText

utils/utils.go:88–127  ·  view source on GitHub ↗

maskSensitiveInText aplica regex para esconder padrões comuns de segredos

(s string)

Source from the content-addressed store, hash-verified

86// maskSensitiveInText aplica regex para esconder padrões comuns de segredos
87
88func maskSensitiveInText(s string) string {
89 patterns := []struct {
90 re *regexp.Regexp
91 repl string
92 }{
93 // Chaves de API comuns (OpenAI, Anthropic, Stripe, etc.)
94 {regexp.MustCompile(`(?i)(sk|pk)_(test|live)_[a-zA-Z0-9]{20,}`), "[REDACTED_API_KEY]"},
95 {regexp.MustCompile(`sk-ant-[a-zA-Z0-9_-]{20,}`), "sk-ant-[REDACTED]"},
96 {regexp.MustCompile(`sk-[a-zA-Z0-9]{20,}`), "sk-[REDACTED]"},
97 // L3: xAI / Grok API keys
98 {regexp.MustCompile(`xai-[a-zA-Z0-9]{20,}`), "xai-[REDACTED]"},
99 // L3: StackSpot tokens (stk_ prefix)
100 {regexp.MustCompile(`stk_[a-zA-Z0-9]{20,}`), "stk_[REDACTED]"},
101 // L3: Mistral API keys
102 {regexp.MustCompile(`(?i)mistral[_-]?[a-zA-Z0-9]{20,}`), "[REDACTED_MISTRAL_KEY]"},
103 // L3: Cohere API keys
104 {regexp.MustCompile(`(?i)cohere[_-]?[a-zA-Z0-9]{20,}`), "[REDACTED_COHERE_KEY]"},
105 // L3: HuggingFace tokens
106 {regexp.MustCompile(`hf_[a-zA-Z0-9]{20,}`), "hf_[REDACTED]"},
107 // L3: GitHub tokens
108 {regexp.MustCompile(`gh[ps]_[a-zA-Z0-9]{20,}`), "[REDACTED_GH_TOKEN]"},
109 {regexp.MustCompile(`github_pat_[a-zA-Z0-9_]{20,}`), "[REDACTED_GH_PAT]"},
110 // Google AI
111 {regexp.MustCompile(`AIza[0-9A-Za-z\-_]{30,}`), "[REDACTED_GOOGLE_API_KEY]"},
112 // AWS keys
113 {regexp.MustCompile(`AKIA[0-9A-Z]{16}`), "[REDACTED_AWS_KEY]"},
114 // Bearer tokens e JWTs (parte do meio)
115 {regexp.MustCompile(`(?i)Bearer\s+[A-Za-z0-9\.\-_]+`), "Bearer [REDACTED]"},
116 {regexp.MustCompile(`ey[A-Za-z0-9-_=]+\.ey[A-Za-z0-9-_=]+\.[A-Za-z0-9-_.+/=]+`), "[REDACTED_JWT]"},
117 // Campos em JSON
118 {regexp.MustCompile(`("access_token"|"refresh_token"|"client_secret"|"client_key"|"api_key"|"password"|"token")\s*:\s*"[^"]+"`), `${1}:"[REDACTED]"`},
119 // Formato KEY=VALUE
120 {regexp.MustCompile(`(?im)^(API_KEY|ACCESS_TOKEN|CLIENT_SECRET|CLIENT_KEY|SECRET|PASSWORD)\s*=\s*.*$`), "$1=[REDACTED]"},
121 }
122 out := s
123 for _, p := range patterns {
124 out = p.re.ReplaceAllString(out, p.repl)
125 }
126 return out
127}
128
129// NewJSONReader cria um io.Reader a partir de um []byte para enviar em requisições HTTP
130func NewJSONReader(data []byte) io.Reader {

Callers 2

GetEnvVariablesSanitizedFunction · 0.85
SanitizeSensitiveTextFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected