Den skjulte fælde ved store og små bogstaver i din web-infrastruktur

Den skjulte fælde ved store og små bogstaver i din web-infrastruktur

Maj 06, 2026 security dns case-sensitivity web infrastructure authentication best practices domain management

Case-følsomheds-fælden, der sniger sig ind

Du udvikler din webapp. Alt kører som smurt lokalt og på staging. Men i produktion går det galt – uden åbenlys grund. Eller værre: Sikkerhedseksperter finder huller, du aldrig har tænkt over.

Skylden er sjældent i koden eller manglende checks. Det er ofte case-håndteringen, der spiller dig et puds.

Hvorfor case skaber kaos

De fleste ved, at domain-navne ignorerer store og små bogstaver. example.com, Example.Com og EXAMPLE.COM er ens. Nemt nok.

Men hvad med:

  • E-mail-adresser i login-systemet?
  • Bruger-ID'er i databasen?
  • Filstier i cloud storage?
  • API-endpoints fra tredjeparter?
  • SSL-certifikat-kontroller?

Når dine systemer behandler case forskelligt, åbner du døren for angreb.

Et konkret angrebsscenarie

Forestil dig: Din app gemmer e-mails i små bogstaver i databasen. Smart. Men OAuth-udbyderen sender John.Doe@Gmail.com med blandet case. Din auth-kode sammenligner strenge uden at normalisere.

Angriberen opretter konto med john.doe@gmail.com. Så logger de ind med John.Doe@Gmail.com. Inkonsekvent case-håndtering lader dem:

  • Slippe for rate limits (forskellige brugere)
  • Oprette dubletter med højere rettigheder
  • Undgå logs
  • Få adgang til forbudte ressourcer

Det bliver værre med:

IDN-domæner – Unicode-regler varierer. Tyrkisk 'i' uden prik ødelægger simple ASCII-antagelser.

Cloud storage – S3-objekter er case-sensitive, buckets ikke. Fejl her giver datalæk eller privilege escalation.

DNS – Queries er case-insensitive, men din validering må ikke være det. Wildcards og CNAME bliver svage punkter.

Sådan sikrer du dit setup

1. Sæt klare normaliseringsregler

Definer case-regler i appen, ikke databasen. Normaliser input med det samme.

# Normaliser ved indgangen
def fix_email(email):
    return email.lower().strip()

def log_ind(email):
    clean_email = fix_email(email)
    bruger = User.query.filter_by(email=clean_email).first()
    return bruger

2. Vælg Unicode-smarte værktøjer

Glem hjemmelavede løsninger til internationale tekster. Brug bewåede libs:

  • Python: unicodedata
  • JavaScript: String.localeCompare()
  • Go: strings med Unicode

3. Test på tværs af systemer

Din app står ikke alene. Tjek case-adfærd hos:

  • DNS-udbyder
  • SSL-udsteder
  • OAuth-partnere
  • Cloud storage
  • CDN-regler

Skriv det ned for ensartethed.

4. Valider input stramt

Stol ikke på eksterne systemer. Normaliser ved hver integration.

// Før API-kald
const gør_ren = (tekst, stil = 'små') => {
  let ren = stil === 'små' ? String(tekst).toLowerCase() : String(tekst);
  return ren.trim();
};

5. Log case-problemer

Opsæt alarmer for mistænkelige variationer.

def tjek_case(email):
    små = email.lower()
    if email != små:
        logger.warning(f"Case-forskel: {email} → {små}")
        # Tjek for angreb

6. Følg NameOcean's bedste praksis

Ved domain-registrering og DNS via NameOcean:

  • Brug kun små bogstaver i koden
  • Hold DNS-poster ensartede
  • Udnyt vores case-insensitive API
  • Dokumentér din case-strategi i infra-koden

Bundlinjen

Sikkerhed handler ikke kun om passwords og HTTPS. Det er hele dit økosystem. En lille case-uoverensstemmelse kan ramme auth, storage og API'er.

De smarte udviklere fanger det tidligt ved at:

  1. Udfordre antagelser – Intet er givet om normalisering
  2. Teste kanter – Case-varianter i sikkerhedstests
  3. Dokumentere – Præcis adfærd pr. system
  4. Normalisere hårdt – Én regel overalt

Dine fremtidige revisorer – eller angribere – vil sætte pris på det.

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE ZH-HANS EN