Logga in Publicera
contextetech/

Skyddsregel: maskera API-nycklar och lösenord

v1
Contexte Tech

254 publicering(ar) · 430 användningar

Instruktion Svenska Licens: MIT uppdaterad för 3 dagar sedan
# Skyddsregel: maskera API-nycklar och lösenord
code: 1w7s2lu | type: guardrail | language: sv | licence: MIT | version: v1
description: Skyddsregel som maskerar API-nycklar, token, lösenord, privata nycklar och anslutningssträngar innan en text, fil eller export skickas till en AI. Regler, 14 testfall, kod.
page: https://contextetech.com/sv/skyddsregler/maskera-hemligheter-api-nycklar-1w7s2lu
mcp: connect https://contextetech.com/mcp then call load_resource with code "1w7s2lu" (or ask "load 1w7s2lu")
json: https://contextetech.com/api/resources/contextetech--maskera-hemligheter-api-nycklar
python: pip install contexte && contexte get 1w7s2lu
citation (required by the licence): contextetech. (2026). Skyddsregel: maskera API-nycklar och lösenord (Version 1) [Skyddsregel]. Contexte Tech. https://contextetech.com/sv/skyddsregler/maskera-hemligheter-api-nycklar-1w7s2lu

Skyddsregel som maskerar API-nycklar, token, lösenord, privata nycklar och anslutningssträngar innan en text, fil eller export skickas till en AI. Regler, 14 testfall, kod.

Regler

Maskera innan något skickas till AI:n varje hemlighet som ger åtkomst till ett konto eller en tjänst:
- API-nycklar (OpenAI, Anthropic, Mistral, Stripe, AWS…) och åtkomsttoken (GitHub, JWT);
- lösenord i klartext (losenord=…, password: …);
- privata nycklar (-----BEGIN … PRIVATE KEY-----);
- inloggningsuppgifter i en adress (postgres://anvandare:losenord@server).
Släpp igenom: exempelvärden (DIN_API_NYCKEL, xxx, <nyckel>), adresser utan inloggningsuppgifter, order- eller commitnummer, text om lösenord som inte innehåller något.
Använd innan du klistrar in en .env-fil, en databasexport eller loggar i en assistent.

Testfall

IndataFörväntat
AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLEBlockera
token: ghp_000000000000000000000000000000000000Blockera
ANTHROPIC_API_KEY=sk-ant-00000000000000000000000000000000Blockera
STRIPE_SECRET=sk_live_0000000000000000000000Blockera
DATABASE_URL=postgres://admin:S3cretPass@db.internal:5432/appBlockera
-----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEA0000000000000000 -----END RSA PRIVATE KEY-----Blockera
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIwMDAwMDAifQ.0000000000000000000000Blockera
losenord = Sommar2026!Blockera
Lösenordet måste vara minst 12 tecken långt.Tillåt
Ersätt DIN_API_NYCKEL med nyckeln från ditt konto.Tillåt
Dokumentationen finns på https://docs.exempel.se/api.Tillåt
Commit a1b2c3d rättar inloggningsfelet.Tillåt
Order nr 2026-10-458712 har skickats.Tillåt
Logga in med ditt vanliga konto.Tillåt

Kod

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

def mask_secrets(text: str) -> tuple[str, bool]:
    """Ersätter hemligheter med [typ maskerad]; returnerar texten och True om något maskerades."""
    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} maskerad]"
        text = re.sub(pattern, repl, text)
    return text, found

Gemenskap

Inga kommentarer ännu. Dela din erfarenhet, det hjälper nästa person.