Blog

Je váš web opravdu bezpečný? HTTPS samo o sobě nestačí

Zelený zámek v adresním řádku dnes považujeme za samozřejmost.

Web běží na HTTPS, prohlížeč nehlásí chybu certifikátu a na první pohled tedy všechno vypadá bezpečně.

Jenže HTTPS řeší pouze jednu část bezpečnosti.

Šifruje komunikaci mezi návštěvníkem a serverem. Nechrání ale samotný web před napadením, nezabrání zneužití slabého hesla a nevyřeší chyby ve WordPressu, pluginu nebo vlastní aplikaci.

Bezpečnost webu je proto potřeba chápat jako kombinaci více opatření.

HTTPS je základ, ne kompletní ochrana

HTTPS zajišťuje, že komunikace mezi prohlížečem a webovým serverem není jednoduše čitelná třetí stranou.

To je důležité například při:

  • odesílání formulářů,
  • přihlašování,
  • práci s osobními údaji,
  • objednávkách,
  • platbách.

Certifikát ale neříká nic o tom, zda je samotný web správně zabezpečený.

I napadená stránka může běžet přes HTTPS.

Zámek v prohlížeči tedy znamená hlavně to, že je spojení šifrované. Ne že je celý web automaticky bezpečný.

Aktualizace jsou jedna z nejdůležitějších věcí

Velká část webových útoků nevyužívá nějaké exotické hackerské techniky.

Často stačí známá chyba ve staré verzi systému nebo pluginu.

Pokud se objeví bezpečnostní problém, vývojáři většinou vydají opravu. Web, který zůstane dlouhodobě neaktualizovaný, ale může být zranitelný i přesto, že je chyba už dávno známá a opravená.

U WordPressu je proto potřeba pravidelně aktualizovat:

  • samotný WordPress,
  • pluginy,
  • šablonu,
  • případně také PHP.

Aktualizace samozřejmě mohou někdy přinést problém s kompatibilitou. To ale není důvod je ignorovat.

Správný postup je mít funkční zálohu, aktualizovat průběžně a po změně web zkontrolovat.

Pluginy jsou častým slabým místem

WordPress má obrovský ekosystém pluginů a právě to je jedna z jeho největších výhod.

Současně ale každý další doplněk představuje další kód, který může obsahovat chybu.

Rizikové jsou především pluginy, které:

  • nejsou dlouhodobě aktualizované,
  • pocházejí z nedůvěryhodného zdroje,
  • mají velmi malé množství uživatelů,
  • používají zastaralé knihovny,
  • už vývojář nepodporuje.

Je proto dobré pluginy pravidelně kontrolovat a nepoužívané odstranit.

Deaktivovaný plugin totiž nemusí být automaticky neškodný, pokud jeho soubory stále zůstávají na serveru.

Čím méně zbytečností, tím lépe

Bezpečnost často souvisí také s jednoduchostí.

Každá nepotřebná funkce znamená další potenciální místo, kde může vzniknout problém.

Pokud web nepotřebuje:

  • registraci uživatelů,
  • komentáře,
  • XML-RPC,
  • některé typy API přístupu,
  • konkrétní plugin,

je dobré zvážit, zda mají zůstat aktivní.

Menší množství aktivních komponent znamená menší prostor pro chyby a jednodušší údržbu.

Silné heslo je stále důležité

Může to znít banálně, ale slabá hesla jsou stále častým problémem.

Heslo typu:

firma2026

nebo

admin123

není bezpečné ani v případě, že web používá HTTPS.

Důležité je používat:

  • dlouhá a unikátní hesla,
  • správce hesel,
  • dvoufaktorové ověření tam, kde je dostupné,
  • samostatné účty pro jednotlivé uživatele.

Není dobré, aby několik lidí sdílelo jeden administrátorský účet.

Pokud každý používá vlastní účet, lze lépe nastavit oprávnění a případně dohledat, kdo provedl konkrétní změnu.

Každý uživatel nemusí být administrátor

WordPress nabízí několik uživatelských rolí.

Pokud někdo pouze píše články, nepotřebuje mít oprávnění instalovat pluginy nebo měnit šablonu.

Princip je jednoduchý:

Každý uživatel by měl mít pouze taková oprávnění, která skutečně potřebuje.

Tím se omezuje riziko chyby i zneužití účtu.

Pokud je například napaden účet autora, útočník má výrazně menší možnosti než při získání přístupu k administrátorovi.

Záloha, která je jen na serveru, nemusí stačit

Zálohování je další důležitou součástí bezpečnosti.

Není ale dobré spoléhat pouze na jednu kopii.

Pokud je záloha uložena na stejném serveru jako web a dojde k jeho napadení nebo technickému problému, může být poškozená i záloha.

Ideální je mít alespoň jednu kopii mimo hlavní hosting.

Záloha by měla obsahovat:

  • databázi,
  • soubory webu,
  • nahraná média,
  • konfiguraci.

A hlavně je dobré vědět, že ji opravdu umíme obnovit.

Záloha, kterou nikdy nikdo nezkusil použít, není stoprocentní jistota.

Kontaktní formuláře jsou častým cílem botů

Formulář na webu může na první pohled působit jako velmi jednoduchá funkce.

Ve skutečnosti je ale veřejně dostupným vstupem do systému.

Automatické roboty mohou formuláře používat pro:

  • spam,
  • hromadné odesílání zpráv,
  • pokusy o vložení škodlivého obsahu,
  • zatěžování serveru.

Proto je vhodné formuláře chránit například kombinací:

  • kontroly vstupních dat,
  • omezení frekvence odesílání,
  • antispamových mechanismů,
  • honeypotu,
  • případně CAPTCHA tam, kde je skutečně potřeba.

Důležité je také správně ošetřit všechna data na straně serveru.

Nestačí spoléhat pouze na kontrolu v JavaScriptu.

Vstup od uživatele nikdy automaticky nepovažujeme za bezpečný

To je jeden ze základních principů webové bezpečnosti.

Data z formuláře, URL adresy, cookie nebo API požadavku mohou být podvržená.

Programátor by proto měl vždy řešit:

  • validaci vstupu,
  • sanitizaci dat,
  • bezpečné databázové dotazy,
  • správné escapování výstupu.

Tím lze výrazně snížit riziko útoků jako SQL injection nebo Cross-Site Scripting.

U hotového redakčního systému velkou část těchto mechanismů řeší samotné jádro, ale vlastní kód a pluginy je stále musí používat správně.

Napadený web nemusí vypadat napadeně

Představa napadeného webu bývá často spojena s tím, že se na stránce objeví cizí obrázek nebo hláška od útočníka.

V praxi může být napadení mnohem méně nápadné.

Útočník může například:

  • vložit skryté odkazy,
  • vytvářet spamové stránky,
  • přesměrovávat pouze některé návštěvníky,
  • používat server k rozesílání spamu,
  • přidat skrytý administrátorský účet,
  • vložit backdoor pro pozdější návrat.

Provozovatel může web běžně otevřít a vůbec si ničeho nevšimnout.

Právě proto má smysl pravidelně kontrolovat soubory, účty a neobvyklé změny.

Pozor na neznámý kód

U starších webů se někdy stává, že se v souborech během let nahromadí různé skripty, knihovny a úpravy.

Po několika letech už nemusí být jasné, k čemu část kódu slouží.

Podezřelé mohou být například:

  • neznámé PHP soubory,
  • dlouhé zakódované řetězce,
  • použití funkcí jako eval() bez jasného důvodu,
  • dynamické načítání kódu z cizího serveru,
  • soubory s náhodnými názvy,
  • kód vložený na začátku legitimního souboru.

To samozřejmě automaticky neznamená malware.

Je to ale důvod k bližší kontrole.

Bezpečnost není jednorázový úkol

Web nelze jednou zabezpečit a potom na něj několik let nesáhnout.

Technologie se mění, objevují se nové chyby a mění se také způsoby útoků.

Bezpečnost je proto průběžný proces.

Dává smysl pravidelně kontrolovat:

  • dostupnost aktualizací,
  • stav záloh,
  • uživatelské účty,
  • nepoužívané pluginy,
  • stav PHP,
  • neobvyklé soubory,
  • funkčnost HTTPS,
  • chyby v logu.

U většího webu může být vhodný také automatický monitoring.

Nejlepší zabezpečení je kombinace opatření

Neexistuje jeden plugin nebo jedno nastavení, které web kompletně ochrání.

Bezpečný web vzniká kombinací více věcí:

  • aktuálního systému,
  • kvalitního kódu,
  • rozumného množství pluginů,
  • silných hesel,
  • správně nastavených oprávnění,
  • pravidelných záloh,
  • bezpečného hostingu,
  • průběžné kontroly.

HTTPS do tohoto seznamu samozřejmě patří.

Je ale pouze jednou jeho částí.

Pokud tedy u webu vidíme zelený zámek, můžeme říct, že komunikace je šifrovaná.

O skutečné bezpečnosti celého webu to samo o sobě ještě nic neříká.