Bezpečnost webu 2026: SSL, HTTPS, HSTS, OWASP Top 10 a strategie záloh

WordPress webů se každý měsíc napadne přes 90 000. Většina kvůli neaktualizovaným pluginům, slabému heslu a chybějícím bezpečnostním headerům. Bezpečnost webu není jen pro banky a e-shopy — pokud zpracováváte e-mail v kontaktním formuláři, máte odpovědnost. V tomto návodu projedeme checklist 2026, který vás ochrání před 95 % běžných útoků.

Co se v tomto článku dozvíte

  • Co je SSL, HTTPS, HSTS a proč je dnes všechno povinné
  • Bezpečnostní headery (CSP, X-Frame-Options, Permissions-Policy) — minimum, které musíte mít
  • Jak nastavit zálohy správně (3-2-1 strategie, retention)
  • OWASP Top 10 (2024) — 10 nejčastějších chyb, kvůli kterým weby padají
  • Jak detekovat útok dřív, než je pozdě

SSL, HTTPS, HSTS — minimum 2026

Co je SSL/TLS

SSL (dnes přejmenováno na TLS) je šifrování mezi prohlížečem a serverem. Bez něj chodí vaše hesla, formulářová data a sušenky po síti v plain textu. Soused na kavárně Wi-Fi to vidí.

HTTPS = TLS + HTTP

HTTPS je HTTP přes TLS. Aktivujete jednorázovým instalováním SSL certifikátu na server.

Pro 99 % webů stačí Let's Encrypt — zdarma, automatická obnova každých 90 dní. Pokud máte hosting v ČR (Wedos, Forpsi), často je v ceně. Cloudflare také zdarma.

HSTS — vynucení HTTPS

I po nasazení HTTPS uživatel přijde na http://web.cz, server udělá redirect 301 na https://. Mezi tímto hopem může útočník udělat man-in-the-middle.

HSTS header říká prohlížeči: „už nikdy nezkoušej HTTP, vždy rovnou HTTPS". Přidejte do .htaccess nebo nginx config:

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"

Bezpečnostní HTTP headery

Pět headerů, které snižují riziko XSS, clickjackingu a data leaků:

1. Content-Security-Policy (CSP)

Omezuje, kde se můžou načítat scripty, styly, fonty atd. Příklad pro typický web:

Content-Security-Policy: default-src 'self';
  script-src 'self' 'unsafe-inline' https://www.googletagmanager.com;
  style-src 'self' 'unsafe-inline' https://fonts.googleapis.com;
  font-src 'self' https://fonts.gstatic.com;
  img-src 'self' data: https:;
  frame-src 'self' https://www.youtube.com;

2. X-Frame-Options

Brání clickjackingu (vložit váš web do iframe na jiné stránce a klamat uživatele).

X-Frame-Options: SAMEORIGIN

3. X-Content-Type-Options

Brání MIME-sniffing zranitelnostem.

X-Content-Type-Options: nosniff

4. Referrer-Policy

Kontroluje, jaké informace se posílají v Referer headeru.

Referrer-Policy: strict-origin-when-cross-origin

5. Permissions-Policy (dříve Feature-Policy)

Omezuje přístup k API jako kamera, mikrofon, geolokace.

Permissions-Policy: camera=(), microphone=(), geolocation=(self)

Test: nasazení ověřte na securityheaders.com — cíl je grade A nebo A+.

Strategie záloh: 3-2-1

Klasické pravidlo:

  • 3 kopie dat
  • na 2 různých médiích / službách
  • z toho 1 off-site (mimo váš server)

Co konkrétně zálohovat

  1. Databáze — denně, retention 30 dní. mysqldump --all-databases | gzip > backup-$(date +%F).sql.gz
  2. Uploady (obrázky, PDF, soubory) — denně inkrementálně, plně 1× týdně.
  3. Konfigurace — git repository (privátní GitLab / GitHub).
  4. Logy — 90 dní, alespoň access a error log.

Kam ukládat

Lokální server + cloudové úložiště (Hetzner Storage Box, Backblaze B2, AWS S3 Glacier). Nikdy jen lokálně — ransomware útok zničí lokální zálohu spolu s primárními daty.

Restore test

Záloha, která se nikdy neobnovila, je iluze. 1× za 6 měsíců spusťte cvičný restore. Najdete tím chyby ve skriptu i ve vlastní hlavě.

OWASP Top 10 — co opravdu řešit (2024)

  1. A01 Broken Access Control — uživatel A vidí data uživatele B kvůli chybnému check. Řešení: vždy kontrolovat ownership, nepřibližovat se k „security through obscurity".
  2. A02 Cryptographic Failures — slabá šifrování, hesla v plaintextu, MD5 hashe. Řešení: bcrypt/argon2 pro hesla, TLS 1.3 minimum.
  3. A03 Injection — SQL injection, command injection, LDAP injection. Řešení: prepared statements vždy a všude.
  4. A04 Insecure Design — chybějící rate limiting, anti-CSRF, audit log. Designové chyby se hůř opravují než kódové.
  5. A05 Security Misconfiguration — defaultní hesla, debug v produkci, exposed admin paneli. Řešení: pre-flight checklist před deployem.
  6. A06 Vulnerable Components — staré verze Wordpressu, Laravelu, Node packages. Řešení: dependabot / renovate-bot, monthly audit.
  7. A07 Authentication Failures — slabá hesla, brute force, missing 2FA. Řešení: argon2, rate limiting, povinné 2FA pro admin.
  8. A08 Software / Data Integrity — neověřené updates, supply chain útoky. Řešení: SRI (Subresource Integrity) pro CDN, signed packages.
  9. A09 Security Logging Failures — žádný audit log, nikdo nesleduje anomálie. Řešení: structured logs do Sentry / Better Stack.
  10. A10 SSRF — server-side request forgery. Řešení: allowlist URL pro server-side fetche, ne user-supplied URLs.

Detekce útoku — jak poznat, že vás napadli

  • Náhlý nárůst trafficu z jedné země / IP rozsahu (často Čína, Rusko, Indie).
  • Nová admin uživatelská účta, která jste nevytvořili.
  • Změna obsahu článků nebo stránek (často spam linky, redirects).
  • Nové soubory v /uploads/ nebo /wp-content/ s podivnými názvy (wso.php, shell.php, r57.php).
  • Pokles pozic ve vyhledávači (Google detekuje malware a sníží ranking nebo úplně deindexuje).
  • Phishing alert v Google Search Console.

Bezpečnostní monitoring zdarma

  • Wordfence (WordPress) nebo Sucuri SiteCheck — týdenní sken
  • Have I Been Pwned — kontrola, zda nějaký z vašich e-mailů nebyl součástí leaků
  • Cloudflare WAF (free tier) — automatická obrana proti běžným útokům
  • Fail2ban — banuje IP po N neúspěšných pokusech (SSH, login)

Případová studie: webpj.cz

Když jsem webpj.cz nasazoval v lednu 2026, prošel jsem následující bezpečnostní setup:

  • HTTPS + HSTS s preload
  • 5 security headerů → securityheaders.com grade A+
  • Argon2 pro hesla, rate limiting na login (5 pokusů / 15 min)
  • Audit log všech admin akcí (kdo, co, kdy)
  • Denní mysqldump zálohy → SFTP → Hetzner Storage Box
  • Restore test 1× za 3 měsíce
  • Cloudflare WAF (free tier)
  • SecurityLog model — automatická detekce podezřelých vzorů

Za 4 měsíce provozu: 0 incidentů, ~150 zablokovaných login attempts, ~12 zachycených SQL injection pokusů.

Často kladené otázky

Kolik stojí pořádné zabezpečení?

Pokud máte slušný hosting + Let's Encrypt + Cloudflare free, technický základ je zdarma. Implementační čas vývojáře = 4–8 hodin pro malý web, 16–40 hodin pro e-shop. Měsíční audit a sledování = 2–5 tis. Kč.

Mám 2FA pro admin login?

Ano, vždy. Slabé heslo + úkrytá databáze = recipe na disaster. Google Authenticator nebo Authy stačí.

Co dělat při napadení?

  1. Okamžitě dejte web do údržby (maintenance mode)
  2. Změňte všechna admin hesla a API klíče
  3. Obnovte z poslední čisté zálohy
  4. Najděte a opravte vulnerabilitu (logy, file scan)
  5. Notifikujte uživatele, pokud se ztratila data (GDPR — povinnost do 72 h)
  6. Z vlastních zkušeností: ihned se obraťte na profesionální security konzultantu

Vyplatí se WAF zdarma od Cloudflare?

Ano, jednoznačně. Cloudflare free tier zahrnuje DDoS protection, basic WAF rules, SSL, CDN. Pro většinu malých a středních webů to stačí.

Co je SQL injection?

Útok, kdy uživatel pošle do formulářového pole speciální znaky, které z hesla udělají SQL příkaz (' OR '1'='1). Bez prepared statements váš dotaz „SELECT * FROM users WHERE password = '$pass'" provede „SELECT * FROM users WHERE password = '' OR '1'='1'", což vrátí všechny uživatele.

Související články