A kis- és nagybetűk rejtett bombája a webes infrastruktúrában

A kis- és nagybetűk rejtett bombája a webes infrastruktúrában

Máj 06, 2026 security dns case-sensitivity web infrastructure authentication best practices domain management

A kisbetű-nagysbetű csapda, ami senki sem említ

Készíted a webalkalmazást. A fejlesztői gépen minden szuperül fut. A teszt szerveren is tökéletes. Aztán élesben váratlan hibák jönnek, vagy biztonsági szakértők találnak lyukakat, amikre sosem gondoltál.

Sokan a kódban keresik a hibát, vagy a validáció hiányát hibáztatják. Pedig sokszor egy egyszerűbb dolog áll a háttérben: a rendszered máshogy kezeli a kis- és nagybetűket, mint kéne.

Miért olyan fontos a betűméret?

Tudjuk, hogy a domain nevek nem érzékenyek a nagybetűkre. example.com, Example.com vagy EXAMPLE.COM – mind ugyanaz. Ennyi, ugye?

De mi a helyzet ezzel:

  • Az autentikációban használt email címekkel?
  • Az adatbázisban tárolt felhasználói azonosítókkal?
  • A felhőben lévő fájlnevekkel?
  • A külső API végpontjaival?
  • Az SSL tanúsítványok ellenőrzésével?

Ha a rendszered különböző részei eltérően alakítják át a szövegeket (case folding), máris támadási felületet hoztál létre.

Egy valós támadási példa

Tegyük fel, az appod email alapján azonosítja a felhasználókat, és az adatbázisban kisbetűsen tárolod őket. Logikus lépés. De az OAuth szolgáltatód John.Smith@gmail.com formában küldi vissza, vegyes betűmérettel. A te kódod nem normálizálja, csak összehasonlít.

Támadó regisztrál john.smith@gmail.com-mal, belép, aztán kipróbálja a John.Smith@gmail.com-ot. Ha a kezelést rosszul csinálod, átcsúszhat:

  • A rátalimitálást megkerüli (más userként látja)
  • Dupla fiókot csinál, magasabb jogosultsággal
  • Kikerüli a biztonsági naplózást
  • Elér olyan erőforrást, ami nem az övé

Ez még veszélyesebb nemzetközi domain nevek (IDN) esetén. A Unicode szabályok nyelvek szerint változnak. Törökországban a pont nélküli 'i' megzavarja a sima ASCII logikát. Vannak karakterek, amiknek nincs nagybetűs párja.

Felhő tárolókban, mint AWS S3, az objektum kulcsok érzékenyek a betűméretre, de a bucket nevek nem. Innen adatszivárgás vagy jogosultságemelés jöhet.

DNS rekordoknál a lekérdezések nem érzékenyek, de a te appod validációja lehet. Wildcard tanúsítványok és CNAME ellenőrzések támadási pontok lesznek.

Hogyan védd meg a rendszert

1. Egységes normálizációs szabályok

Az app szintjén döntsd el a szabályokat, ne az adatbázisban. Minden bemenő adatot azonnal alakíts át.

# Jól van: határnál normálizálunk
def email_norm(email):
    return email.lower().strip()

def bejelentkezes(email):
    norm_email = email_norm(email)
    felhasznalo = User.query.filter_by(email=norm_email).first()
    return felhasznalo

2. Unicode-kompatibilis könyvtárak

Nemzetközi tartalomnál ne találj ki semmit. Használj bevált eszközöket:

  • Python: unicodedata
  • JavaScript: String.localeCompare()
  • Go: strings csomag Unicode támogatással

3. Teszteld az egész láncot

Az appod nem áll egyedül. Ellenőrizd a betűkezelést:

  • DNS szolgáltatód API-ján
  • SSL kiadó validációján
  • Külső OAuth-on
  • Felhő tárolódon
  • CDN szabályain

Írd le, hogyan viselkedik mindegyik, és tedd egységessé.

4. Szigorú bemeneti ellenőrzés

Ne hidd, hogy a külső rendszerek ugyanúgy kezelik. Mindenhol validálj és normálizálj.

// API hívás előtt
const api_norm = (bemeno, stilus = 'kisbetus') => {
  let norm = stilus === 'kisbetus' 
    ? String(bemeno).toLowerCase() 
    : String(bemeno);
  return norm.trim();
};

5. Naplózd a betűeltéréseket

Figyelmeztess gyanús variációkra:

def betu_eltérés(email):
    norm = email.lower()
    if email != norm:
        logger.warning(f"Betűeltérés: {email} -> {norm}")
        # Nézd meg, támadás-e

6. NameOcean legjobb gyakorlatok

Domain regisztrációkor vagy DNS beállításkor NameOcean-nél tartsd ezt:

  • Mindig kisbetűs domain nevet a kódban
  • DNS rekordokat egységes betűszabállyal tárold
  • Használd API-nk nem érzékeny funkcióit
  • Írd le a stratégiát az infrastruktúra-kódban

A tanulság

Biztonság nem csak erős jelszó és HTTPS. Az egész ökoszisztémát kell értened. Egy apró betűkezelési hiba végigszalad az autentikáción, tároláson és API-kon.

Aki időben rájön:

  1. Kérdőjelezi a feltételezéseket – Ne vedd evidensnek a normálizálást
  2. Teszteli a szélsőségeket – Betűvariációk a biztonsági tesztekben
  3. Dokumentál – Pontosan írd le minden rendszer viselkedését
  4. Következetesen normálizál – Válassz szabványt, és tartsd be mindenhol

A jövőbeli kutatók (vagy támadók) hálásak lesznek.

Read in other languages:

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