Iniciar sessão Publicar
contextetech/

Salvaguarda: ocultar chaves de API e palavras-passe

v1
Contexte Tech

254 publicação(ões) · 698 utilizações

Instrução Português Licença: MIT atualizado há 4 dias
# Salvaguarda: ocultar chaves de API e palavras-passe
code: 1srd0yo | type: guardrail | language: pt | licence: MIT | version: v1
description: Salvaguarda que oculta chaves de API, tokens, palavras-passe, chaves privadas e cadeias de ligação antes de enviar um texto, um ficheiro ou uma exportação a uma IA. Regras, 14 casos de teste, código.
page: https://contextetech.com/pt/salvaguardas/ocultar-segredos-chaves-api-1srd0yo
mcp: connect https://contextetech.com/mcp then call load_resource with code "1srd0yo" (or ask "load 1srd0yo")
json: https://contextetech.com/api/resources/contextetech--ocultar-segredos-chaves-api
python: pip install contexte && contexte get 1srd0yo
citation (required by the licence): contextetech. (2026). Salvaguarda: ocultar chaves de API e palavras-passe (Version 1) [Salvaguarda]. Contexte Tech. https://contextetech.com/pt/salvaguardas/ocultar-segredos-chaves-api-1srd0yo

Salvaguarda que oculta chaves de API, tokens, palavras-passe, chaves privadas e cadeias de ligação antes de enviar um texto, um ficheiro ou uma exportação a uma IA. Regras, 14 casos de teste, código.

Regras

Ocultar antes de enviar à IA qualquer segredo que dê acesso a uma conta ou a um serviço:
- chaves de API (OpenAI, Anthropic, Mistral, Stripe, AWS…) e tokens de acesso (GitHub, JWT);
- palavras-passe escritas em claro (senha=…, password: …);
- chaves privadas (-----BEGIN … PRIVATE KEY-----);
- credenciais dentro de um endereço (postgres://utilizador:senha@servidor).
Deixar passar: valores de exemplo (SUA_CHAVE_API, xxx, <chave>), endereços sem credenciais, números de encomenda ou de commit, textos sobre palavras-passe que não contêm nenhuma.
Aplicar antes de colar um ficheiro .env, uma exportação da base de dados ou registos num assistente.

Casos de teste

EntradaEsperado
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLEBloquear
token: ghp_000000000000000000000000000000000000Bloquear
ANTHROPIC_API_KEY=sk-ant-00000000000000000000000000000000Bloquear
STRIPE_SECRET=sk_live_0000000000000000000000Bloquear
DATABASE_URL=postgres://admin:S3cretPass@db.internal:5432/appBloquear
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA0000000000000000 -----END RSA PRIVATE KEY-----Bloquear
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIwMDAwMDAifQ.0000000000000000000000Bloquear
senha = Verao2026!Bloquear
A palavra-passe deve ter pelo menos 12 caracteres.Permitir
Substitua SUA_CHAVE_API pela chave da sua conta.Permitir
A documentação está em https://docs.exemplo.pt/api.Permitir
O commit a1b2c3d corrige o erro de início de sessão.Permitir
Encomenda n.º 2026-10-458712 expedida.Permitir
Inicie sessão com a sua conta habitual.Permitir

Código

import re

PATTERNS = {
    "private_key": r"-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----",
    "aws_key": r"\bAKIA[0-9A-Z]{16}\b",
    "github_token": r"\bgh[pousr]_[A-Za-z0-9]{36,}\b",
    "llm_api_key": r"\bsk-(?:ant-|proj-)?[A-Za-z0-9_-]{20,}\b",
    "stripe_key": r"\b[sr]k_(?:live|test)_[A-Za-z0-9]{16,}\b",
    "jwt": r"\beyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b",
    "url_credentials": r"\b[a-z][a-z0-9+.-]*://[^\s:/@]+:[^\s@/]+@",
    "password_assignment": r"(?i)\b(?:password|passwd|pwd|secret|api_?key|token|palavra_passe|senha)\s*[:=]\s*[\"']?[^\s\"']{6,}",
}
PLACEHOLDERS = ("xxx", "...", "<", "your", "sua_", "example_value")

def mask_secrets(text: str) -> tuple[str, bool]:
    """Substitui os segredos por [tipo oculto]; devolve o texto e True se algo foi ocultado."""
    found = False
    for name, pattern in PATTERNS.items():
        def repl(m):
            nonlocal found
            if any(p in m.group(0).lower() for p in PLACEHOLDERS):
                return m.group(0)
            found = True
            return f"[{name} oculto]"
        text = re.sub(pattern, repl, text)
    return text, found

Comunidade

Ainda não há comentários. Partilhe a sua experiência, vai ajudar a próxima pessoa.