Bezpečnosť web aplikácie: 10 chýb, ktoré útočníci milujú
Väčšina prelomení web aplikácií nie je dielom geniálnych hackerov, ale zneužitím tých istých desiatich chýb, ktoré sa opakujú roky. Dobrá správa: keď ich poznáte, každú z nich zavriete niekoľkými riadkami kódu a jedným nastavením. Tu je desatoro, ktoré by malo prejsť každou web aplikáciou pred spustením.
Čo si z článku odnesiete
- Nikdy neverte vstupu od používateľa — validujte a parametrizujte všetko.
- Najčastejšie diery sú SQL injection, XSS a IDOR — a všetky majú jednoduchú obranu.
- Heslá hashujte moderným algoritmom, nikdy neukladajte v čitateľnej podobe.
- Bezpečnosť nie je funkcia navyše, ale vlastnosť, ktorá musí byť v návrhu od začiatku.
Zlaté pravidlo: neverte vstupu
Deväť z desiatich zraniteľností pramení z jedinej chyby — aplikácia dôveruje dátam, ktoré prišli od používateľa. Formulár, adresa v prehliadači, hlavička požiadavky aj obsah nahraného súboru sú potenciálny útok. Preto platí: každý vstup validuj na vstupe a escapuj na výstupe.
Desatoro najčastejších chýb
- 1. SQL injection. Vkladanie vstupu priamo do SQL dotazu. Obrana: výhradne parametrizované dotazy (prepared statements).
- 2. XSS (Cross-Site Scripting). Vloženie cudzieho skriptu do stránky. Obrana: escapovanie výstupu a prísna Content-Security-Policy.
- 3. IDOR. Prístup k cudzím dátam zmenou ID v adrese. Obrana: pri každom zázname over, či patrí prihlásenému používateľovi.
- 4. Slabá autentifikácia. Krátke heslá, žiadny limit pokusov. Obrana: silné heslá, rate limiting a dvojfaktor.
- 5. Nezabezpečené sedenia. Session cookie bez ochrany. Obrana: príznaky HttpOnly, Secure a SameSite.
- 6. CSRF. Podvrhnutá akcia v mene prihláseného. Obrana: CSRF token pri každej zmenovej operácii.
- 7. Odhalené citlivé dáta. Chybové hlášky a logy s heslami či kľúčmi. Obrana: všeobecné chyby navonok, detaily len do logu.
- 8. Zlá kontrola prístupu. Skrytie tlačidla, ale endpoint stále dostupný. Obrana: kontrolu práv rob na serveri, nie v UI.
- 9. Zastarané závislosti. Knižnice so známymi dierami. Obrana: pravidelný audit a aktualizácie.
- 10. Nebezpečné nahrávanie súborov. Spustiteľný súbor namiesto obrázka. Obrana: kontrola typu, premenovanie a uloženie mimo webroot.
SQL injection na jednom príklade
Ukážme si najznámejšiu chybu aj jej opravu. Prvý riadok je pozvánka pre útočníka, druhý ho zavrie:
// ZLE — vstup priamo v dotaze
query("SELECT * FROM users WHERE email = '" + input + "'")
// DOBRE — parametrizovaný dotaz
query("SELECT * FROM users WHERE email = ?", [input])Pri druhom zápise databáza berie vstup vždy ako hodnotu, nikdy nie ako súčasť príkazu — a útok typu ' OR '1'='1 jednoducho nezaberie.
Ručné „escapovanie úvodzoviek“ nie je náhrada za parametrizované dotazy. Vždy sa nájde znak alebo kódovanie, na ktoré ste zabudli.
Heslá, sedenia a hlavičky
Tri veci, ktoré musíte mať poriadne bez ohľadu na veľkosť projektu:
- Heslá hashujte moderným algoritmom (bcrypt, argon2). Nikdy ich neukladajte čitateľne a neposielajte e-mailom.
- Zabezpečte cookies. Session cookie musí mať HttpOnly (neprístupné z JavaScriptu), Secure (len cez HTTPS) a SameSite (obrana proti CSRF).
- Pridajte bezpečnostné hlavičky. Content-Security-Policy, X-Content-Type-Options a Strict-Transport-Security zvýšia latku útočníkovi zadarmo.
Bezpečnosť nie je stav, ktorý raz dosiahnete. Je to disciplína, ktorú udržiavate pri každej novej funkcii. Zásada bezpečného vývoja
Zhrnutie
Kľúčové poznatky
- Neverte žiadnemu vstupu — validujte na vstupe, escapujte na výstupe.
- SQL injection vyriešite jediným návykom: parametrizované dotazy, nikdy nie spájanie reťazcov.
- Kontrolu prístupu robte na serveri; skrytie tlačidla v UI nie je ochrana.
- Heslá hashujte (bcrypt/argon2) a cookies zabezpečte HttpOnly, Secure, SameSite.
- Aktualizujte závislosti a doplňte bezpečnostné hlavičky — obrana zadarmo.
Potrebujete web aplikáciu, ktorá obstojí?
Interné systémy, portály a platformy staviam s bezpečnosťou v základoch — parametrizované dotazy, poriadne role, zabezpečené sedenia a auditované závislosti. Pozrite si, ako pristupujem k tvorbe web aplikácií, alebo mi napíšte.
Čítajte ďalej
Ďalšie články
Ako navrhnúť REST API, ktoré prežije roky a vývojári ho pochvália
Verziovanie, stránkovanie, konzistentné chyby a idempotencia. Pravidlá, vďaka ktorým sa vaše API používa ľahko aj po piatich rokoch.
Čítať článokVytvorte si vlastný AI marketingový tím
AI nástroje, ktoré nahradia časť marketingového oddelenia. Ako si krok po kroku poskladať vlastný AI tím a ušetriť desiatky hodín.
Čítať článokAko zrýchliť web na 90+ bodov: 12 krokov ku Core Web Vitals
LCP, CLS a INP rozhodujú o pozícii v Google aj o tom, či návštevník zostane. Konkrétne kroky od optimalizácie obrázkov po odloženie skriptov.
Čítať článok