Přejít na hlavní obsah

Znalostní báze · Bezpečnost

Nejčastější bezpečnostní chyby webů

90 % úspěšných útoků na weby zneužívá stejných 6 druhů zranitelností. Přehled co hledat, jak se to projeví a jak to opravit.

Kritická
Vysoká
Střední

1. SQL Injection

Kritická

Útočník vloží SQL kód do formuláře nebo URL. Pokud aplikace nepracuje správně se vstupy, může číst, měnit nebo smazat celou databázi — nebo získat admin přístup bez hesla.

Jak to poznat:

Do formuláře zadejte ' OR '1'='1. Pokud se přihlásíte bez správného hesla nebo dostanete SQL chybu, máte problém.

Oprava:

Nikdy neposkládávejte SQL spojováním řetězců. Vždy používejte prepared statements (PDO::prepare() v PHP) nebo ORM (Doctrine, Eloquent).

2. Exponované API klíče a hesla v kódu

Kritická

API klíče (Stripe, SendGrid, AWS, OpenAI), databázová hesla nebo přístupové tokeny uložené přímo v kódu nebo v .env souborech dostupných veřejně. Zvlášť rizikové pokud je kód na GitHubu.

Jak to poznat:

Zkuste přistoupit na /.env, /config.php nebo /wp-config.php ve vašem prohlížeči. Pokud vidíte obsah souboru, je to problém. Zkontrolujte GitHub repozitář — GitGuardian nebo git log --all --full-history -- "*.env".

Oprava:

Nastavte .htaccess nebo nginx pravidla blokující přístup k .env souborům. Přidejte .env do .gitignore. Rotujte všechny klíče, které mohly být exponovány.

3. XSS — Cross-Site Scripting

Vysoká

Útočník vloží JavaScript kód do obsahu webu (komentáře, uživatelský profil, vyhledávání). Kód se pak spustí v prohlížeči ostatních uživatelů — může ukrást session tokeny nebo přesměrovat na phishing.

Oprava:

Vždy escapujte uživatelský vstup před výpisem do HTML. V PHP: htmlspecialchars($vstup, ENT_QUOTES, 'UTF-8'). Nastavte Content Security Policy hlavičku.

4. Slabá autentizace

Vysoká

Hesla uložená jako MD5 nebo plain text. Absence rate limitingu na přihlašovací formuláře (brute force útok vyzkouší milion hesel za hodinu). Session tokeny přenášené přes HTTP (bez HTTPS).

Oprava:

Hesla hashujte přes password_hash($pass, PASSWORD_BCRYPT) (PHP). Implementujte rate limiting (max 10 pokusů za 15 minut). Vždy HTTPS — certifikát Let's Encrypt je zdarma.

5. CSRF — Cross-Site Request Forgery

Vysoká

Útočník přiměje přihlášeného uživatele kliknout na odkaz, který vykoná akci na webu bez jeho vědomí — změna hesla, odeslání peněz, smazání dat. Web akci schválí, protože uživatel je přihlášen.

Oprava:

Do každého formuláře přidejte CSRF token — náhodný řetězec generovaný pro každou session, který server ověří při odeslání. Moderní frameworky (Symfony, Laravel) to řeší automaticky.

6. Zastaralý software a CMS

Střední

WordPress, Joomla a jejich pluginy jsou cílem automatizovaných botů, kteří skenují internet na starší verze se známými zranitelnostmi. Jedna neaktualizovaná komponenta může stačit.

Oprava:

Pravidelně aktualizujte CMS, pluginy a PHP verzi. Odstraňte nepoužívané pluginy. Pro WordPress: zapněte automatické aktualizace minor verzí a nastavte upozornění.

Kde začít: pět minut checklist

Bez pomoci vývojáře můžete hned teď zkontrolovat:

  • Přistupte na vaseweb.cz/.env — pokud vidíte obsah, urgentně opravte
  • Zadejte URL webu do observatory.mozilla.org — bezpečnostní hlavičky, HTTPS
  • Zkontrolujte verzi PHP (phpinfo() nebo hosting panel) — PHP pod 8.1 je end-of-life
  • Projděte WordPress admin — Plugins → přehled dostupných aktualizací
  • Otevřete Chrome DevTools → Console — žádné chybové hlášky s "Warning:" nebo "Deprecated:"

Nejčastější otázky

Co je SQL injection a jak mu zabránit?
SQL injection je útok, při kterém útočník vloží SQL kód do formulářového pole. Pokud aplikace nezpracovává vstup správně, útočník může číst, měnit nebo smazat celou databázi. Prevence: nikdy neposkládávejte SQL dotazy spojováním řetězců — používejte prepared statements (PDO v PHP) nebo ORM framework (Doctrine, Eloquent).
Jak najít bezpečnostní chyby ve svém webu?
Základní kroky: 1) Zkontrolujte, zda jsou .env soubory dostupné veřejně (přistupte na /.env). 2) Spusťte Mozilla Observatory (observatory.mozilla.org). 3) Projděte PHP error log. 4) Zkontrolujte verzi CMS a pluginů. 5) Nechte provést profesionální bezpečnostní audit.
Co dělat, když byl web hacknutý?
Okamžité kroky: 1) Stáhněte web nebo přepněte do maintenance mode. 2) Změňte všechna hesla (hosting, databáze, FTP, CMS admin). 3) Zálohujte aktuální stav pro forenzní analýzu. 4) Najděte backdoor — útočník pravděpodobně zanechal přístupový bod. 5) Obnovte ze zálohy ze stavu před útokem. 6) Identifikujte jak se útočník dostal dovnitř a opravte zranitelnost.
J

Jan Matoušek

Webový vývojář. Programuju od 2004, profesně od 2009. Bezpečnostní audit webu a oprava zranitelností jsou součástí mých technických služeb.

Napište mi

Potřebujete poradit,
něco udělat nebo
druhý názor?

Nemusíte se připravovat ani znát technické detaily. Stačí pár vět o tom, co máte a co potřebujete — ozvu se do 24 hodin a řeknu, jak se na to dívám.

Konzultace 30 minut zdarma - bez závazku
Cenu domluvíme předem

Telefon / WhatsApp

+420 773 202 288

První napsání je zdarma a nezávazné. Ozvu se do 24 hodin.

Napsat mi