Anmelden Veröffentlichen
contextetech/

Schutzregel: API-Schlüssel und Passwörter maskieren

v1
Contexte Tech

254 Veröffentlichung(en) · 321 Nutzungen

Anweisung Deutsch Lizenz: MIT aktualisiert vorgestern
# Schutzregel: API-Schlüssel und Passwörter maskieren
code: lbmeln | type: guardrail | language: de | licence: MIT | version: v1
description: Schutzregel, die API-Schlüssel, Tokens, Passwörter, private Schlüssel und Verbindungszeichenfolgen maskiert, bevor ein Text, eine Datei oder ein Export an eine KI geht. Regeln, 14 Testfälle, Code.
page: https://contextetech.com/de/schutzregeln/geheimnisse-api-schluessel-maskieren-lbmeln
mcp: connect https://contextetech.com/mcp then call load_resource with code "lbmeln" (or ask "load lbmeln")
json: https://contextetech.com/api/resources/contextetech--geheimnisse-api-schluessel-maskieren
python: pip install contexte && contexte get lbmeln
citation (required by the licence): contextetech. (2026). Schutzregel: API-Schlüssel und Passwörter maskieren (Version 1) [Schutzregel]. Contexte Tech. https://contextetech.com/de/schutzregeln/geheimnisse-api-schluessel-maskieren-lbmeln

Schutzregel, die API-Schlüssel, Tokens, Passwörter, private Schlüssel und Verbindungszeichenfolgen maskiert, bevor ein Text, eine Datei oder ein Export an eine KI geht. Regeln, 14 Testfälle, Code.

Regeln

Vor dem Senden an die KI jedes Geheimnis maskieren, das Zugang zu einem Konto oder Dienst gibt:
- API-Schlüssel (OpenAI, Anthropic, Mistral, Stripe, AWS…) und Zugriffstokens (GitHub, JWT);
- Passwörter im Klartext (passwort=…, password: …);
- private Schlüssel (-----BEGIN … PRIVATE KEY-----);
- Zugangsdaten in einer Adresse (postgres://nutzer:passwort@server).
Durchlassen: Platzhalter (IHR_API_SCHLUESSEL, xxx, <schlüssel>), Adressen ohne Zugangsdaten, Bestell- oder Commit-Nummern, Text über Passwörter ohne ein Passwort.
Anwenden, bevor eine .env-Datei, ein Datenbankexport oder Logs in einen Assistenten kopiert werden.

Testfälle

EingabeErwartet
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLEBlockieren
token: ghp_000000000000000000000000000000000000Blockieren
ANTHROPIC_API_KEY=sk-ant-00000000000000000000000000000000Blockieren
STRIPE_SECRET=sk_live_0000000000000000000000Blockieren
DATABASE_URL=postgres://admin:S3cretPass@db.internal:5432/appBlockieren
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA0000000000000000 -----END RSA PRIVATE KEY-----Blockieren
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIwMDAwMDAifQ.0000000000000000000000Blockieren
passwort = Sommer2026!Blockieren
Das Passwort muss mindestens 12 Zeichen lang sein.Zulassen
Ersetzen Sie IHR_API_SCHLUESSEL durch den Schlüssel Ihres Kontos.Zulassen
Die Dokumentation steht unter https://docs.beispiel.de/api.Zulassen
Commit a1b2c3d behebt den Anmeldefehler.Zulassen
Bestellung Nr. 2026-10-458712 wurde versandt.Zulassen
Melden Sie sich mit Ihrem üblichen Konto an.Zulassen

Code

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|passwort|kennwort)\s*[:=]\s*[\"']?[^\s\"']{6,}",
}
PLACEHOLDERS = ("xxx", "...", "<", "your", "ihr_", "example_value")

def mask_secrets(text: str) -> tuple[str, bool]:
    """Ersetzt Geheimnisse durch [Typ maskiert]; gibt den Text und True zurück, wenn etwas maskiert wurde."""
    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} maskiert]"
        text = re.sub(pattern, repl, text)
    return text, found

Community

Noch keine Kommentare. Teile deine Erfahrung, sie hilft den Nächsten.