Přejít na obsah

Nastavení cookies

Zvolte, které druhy cookies povolíte. Svou volbu můžete kdykoli změnit přes Nastavení cookies v dolní části každé stránky. Prohlášení o ochraně osobních údajů

Nezbytné

Vždy zapnuté

Potřebné pro přihlášení, uchování košíku a zapamatování vašich voleb. Jsou vždy zapnuté.

Které cookies?
  • weboke_sessie, weboke_klant, weboke_remember: vaše relace a trvalé přihlášení
  • weboke_basket: váš košík
  • wkBtwIncl: zobrazení cen s DPH nebo bez DPH
  • wok_cookies: vaše volba cookies, 12 měsíců

Měří, která reklama vede k návštěvě nebo objednávce, abychom neplatili za reklamy, které nic nepřinášejí.

Které cookies?
  • Google Ads přes Google Tag Manager (_gcl_au, _gcl_aw), až 90 dní
  • OpenAI Ads, reklamy v ChatGPT
  • wok_aff: partner, který vás k nám doporučil (partnerský program), 60 dní

4,6

Země a jazyk

Každá země má vlastní web s cenami a DPH dané země.

Zobrazit

Vaše webová stránka: https, HSTS a bezpečnostní hlavičky

Modul 4: E-mail, web a doména · Doba čtení: 11 minut

Cíl lekce: Po této lekci dokážete zkontrolovat základní zabezpečení Vaší webové stránky: platný certifikát, přesměrování na https, HSTS se správným max-age, nejdůležitější bezpečnostní hlavičky a aktualizaci Vašeho CMS.
Klíčové pojmy: TLS certifikát, https, přesměrování na https, HSTS, max-age, includeSubDomains, preload, HTTP hlavička, Content-Security-Policy, X-Content-Type-Options, frame-ancestors, X-Frame-Options, Referrer-Policy

Co se stane, když někdo otevře Vaši stránku

Když zákazník zadá example.com do adresního řádku, prohlížeč si vyžádá stránku z Vašeho webového serveru. Tato komunikace probíhá přes HTTP. U https je kolem toho zašifrované spojení: TLS. K tomu potřebuje Vaše webová stránka TLS certifikát (často se mu stále říká SSL certifikát). Certifikát dokazuje, že server skutečně patří k example.com, a šifrování zajišťuje, že nikdo cestou nemůže číst obsah ani nic měnit. To je důležité na veřejné wifi, kde nevíte, kdo síť spravuje (lekce 5.3).

U každé odpovědi posílá server kromě samotné stránky také řadu hlaviček: krátké řádky s informacemi a pokyny pro prohlížeč. Na obrazovce je nevidíte, ale z velké části určují, jak bezpečně prohlížeč s Vaší stránkou zachází. Část z nich jsou bezpečnostní hlavičky. V této lekci projdeme čtyři vrstvy: certifikát, přesměrování, HSTS a hlavičky. Poté se krátce podíváme na aktualizaci samotné webové stránky.

Vrstva 1: platný certifikát

Certifikát je v pořádku, pokud splňuje tři podmínky:

  1. nevypršela jeho platnost;
  2. byl vydán důvěryhodnou certifikační autoritou (kterou prohlížeče znají, jako Let's Encrypt nebo komerční poskytovatel);
  3. platí přesně pro název, který návštěvník otevírá: example.com i www.example.com, pokud používáte oba.

Téměř každý poskytovatel hostingu dnes zajišťuje bezplatný certifikát, který se automaticky prodlužuje. Pokud se něco pokazí, je to většinou proto, že doménové jméno ukazuje na jiný server, nebo protože záznam CAA blokuje vydavatele (lekce 4.3).

Důležité je vědět: zámek v prohlížeči nic neříká o důvěryhodnosti stránky. Říká pouze to, že spojení je zašifrované a že certifikát patří k názvu v adresním řádku. Phishingové stránky na mijnbank-veilig.example mají stejně dobře zámek. Proto se v lekci 3.2 naučíte číst doménu.

Vrstva 2: vždy přesměrovat na https

Samotný certifikát nestačí. Kdo otevře http://example.com, například přes starý odkaz nebo pouhým zadáním názvu, musí být automaticky přesměrován na https verzi. Tomu se říká přesměrování (redirect, obvykle se stavovým kódem 301).

Přehledné pořadí je:

http://example.com      ->  https://example.com
https://example.com     ->  https://www.example.com   (pouze pokud používáte www jako hlavní adresu)
http://www.example.com  ->  https://www.example.com

Všimněte si prvního řádku: z http přesměrujte nejprve na https na stejném názvu, až poté případně na www. Prohlížeč tak může přijmout i HSTS pokyn pro holý název. Internet.nl kontroluje přesně toto.

Častou chybou je dvojité přesměrování: v hostingovém panelu i v pluginu nebo v .htaccess. To může vytvořit nekonečnou smyčku ("příliš mnoho přesměrování"). Používejte jedno místo.

Vrstva 3: HSTS

Přesměrování má slabý okamžik: úplně první požadavek jde ještě nezašifrovaně přes http. Útočník ve stejné síti může tento jeden požadavek zachytit a návštěvníka udržet na padělané, nezašifrované verzi. Právě k tomu slouží HSTS (HTTP Strict Transport Security, RFC 6797).

S HSTS Vaše stránka přes https posílá hlavičku:

Strict-Transport-Security: max-age=31536000; includeSubDomains

Prohlížeč si pak zapamatuje: "tuto stránku otevírat pouze přes https, následujících 31 536 000 sekund (jeden rok)". Pokud návštěvník později zadá http://example.com, prohlížeč z toho sám udělá https, ještě předtím, než cokoliv projde sítí. Slabý první požadavek tak odpadá.

SoučástVýznam
max-age=Jak dlouho si to prohlížeč pamatuje, v sekundách. Internet.nl považuje minimálně jeden rok (max-age=31536000) za dostatečné; krátká doba nechrání lidi, kteří Vaši stránku navštěvují jen občas.
includeSubDomainsPlatí také pro všechny subdomény, jako shop.example.com a mail.example.com.
preloadŽádáte o zařazení do seznamu, který je zabudovaný v prohlížečích (hstspreload.org). Pak je chráněna i úplně první návštěva. Požadavky zahrnují mimo jiné max-age alespoň jeden rok, includeSubDomains a všechny subdomény na https. Vyřazení ze seznamu trvá dlouho.
max-age=0Smaže zapamatovaný pokyn.

Tři věci, které byste měli vědět, než zapnete HSTS:

  • Nejprve musí https fungovat všude. Prohlížeč, který si zapamatoval HSTS a narazí na chybu certifikátu, návštěvníkovi nenabídne tlačítko pro pokračování i přesto (RFC 6797, odstavec 12.1). Pokud Vám vyprší certifikát nebo nesedí pro www, je Vaše stránka pro tyto návštěvníky nedostupná, dokud se problém nevyřeší.
  • includeSubDomains zasáhne vše pod Vaší doménou. Stará subdoména bez certifikátu, například stránka tiskárny nebo kamery na camera.example.com, pak už nepůjde otevřít.
  • Budujte to postupně. Začněte s krátkým max-age (například jeden den), zkontrolujte, zda vše funguje, a postupně zvyšujte až na jeden rok. U každého kroku vyčkejte celou danou dobu.

Hlavičku HSTS, která přijde přes obyčejné http, prohlížeč ignoruje. Uvidíte ji tedy pouze v https odpovědi.

Vrstva 4: bezpečnostní hlavičky

Kromě HSTS existuje několik hlaviček, které prohlížeči říkají, co smí a co nesmí dělat s Vašimi stránkami. Nemusíte mít dokonale vyřešené všechny, ale první tři jsou jednoduché a bez rizika.

HlavičkaProti čemuDobrá hodnota
X-Content-Type-OptionsProhlížeč sám hádá, o jaký typ souboru jde, takže nahraný "obrázek" může být spuštěn jako skript.nosniff (jediná platná hodnota)
Content-Security-Policy: frame-ancestors ... nebo X-Frame-OptionsClickjacking: jiná stránka neviditelně načte Vaši stránku do rámce a nechá návštěvníky nevědomky klikat na Vaše tlačítka.frame-ancestors 'self' nebo 'none'; starší hlavička X-Frame-Options: SAMEORIGIN nebo DENY
Referrer-PolicyPři kliknutí na jinou stránku posílá prohlížeč adresu předchozí stránky. Může v ní být citlivá informace, například hledaný výraz nebo číslo objednávky.no-referrer nebo same-origin (přísné), strict-origin-when-cross-origin (běžné, internet.nl zde zobrazí upozornění)
Content-Security-Policy (úplná)Omezuje, odkud smí stránka načítat skripty, styly a obrázky. Výrazně ztěžuje vložení škodlivých skriptů (XSS).Řešení na míru podle stránky. Vyhněte se unsafe-inline, unsafe-eval a zástupným znakům.

Úplná Content-Security-Policy je nejsilnější, ale také nejobtížnější: příliš přísné pravidlo může rozbít Vaši statistiku, platební tlačítko nebo chatové okno. S variantou Content-Security-Policy-Report-Only můžete nejprve změřit, co by bylo zablokováno, aniž byste cokoliv rozbili. Nechte to na svém webovém vývojáři, nebo začněte pouze s frame-ancestors.

Jak si hlavičky sami prohlédnout

Otevřete Vaši stránku v prohlížeči, stiskněte F12 (nebo zvolte "Prozkoumat"), přejděte na záložku Síť, stránku znovu načtěte a klikněte na první požadavek. Pod "Hlavičky odpovědi" (Response Headers) uvidíte vše, co server posílá. Lze to zjistit i přes příkazový řádek:

curl -sI https://example.com/

Samotná webová stránka: CMS, pluginy a šablony

Nejlepší hlavičky nepomohou, pokud je software za Vaší stránkou zranitelný. Většina napadených stránek malých firem nebyla prolomena přes webový server, ale přes zastaralý plugin, šablonu, která se už léta neaktualizuje, nebo slabé heslo administrátora.

  • Zapněte automatické aktualizace pro Váš CMS (například WordPress, Joomla nebo jiný systém) a pro pluginy, kde je to možné.
  • Odstraňte pluginy a šablony, které nepoužíváte; vypnutí nestačí, soubory tam stále zůstávají.
  • Pro administrátorské přihlášení používejte silné, jedinečné heslo a dvoufázové ověření (modul 2) a omezte počet pokusů o přihlášení.
  • Udržujte verzi PHP (nebo jiného jazyka) Vašeho balíčku na verzi, která ještě dostává aktualizace (lekce 5.1).

V praxi: takto to vypadá

V DirectAdmin, panelu, který WebOké používá, nejprve u Vaší domény zapněte Bezpečný SSL a poté Vynutit SSL s přesměrováním na https. Na stejném místě je přepínač pro HSTS; zapněte jej až ve chvíli, kdy certifikát funguje pro všechny názvy. U jiných poskytovatelů to funguje podobně, nebo si to nastavíte v nastavení svého CMS.

Pokud Vaše stránka běží na Apache nebo LiteSpeed, můžete hlavičky nastavit také v .htaccess:

<IfModule mod_headers.c>
  Header always set Strict-Transport-Security "max-age=31536000"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Content-Security-Policy "frame-ancestors 'self'"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

Přidejte includeSubDomains až ve chvíli, kdy máte jistotu, že každá subdoména má https. Po každé změně zkontrolujte výsledek pomocí testu webových stránek na internet.nl nebo pomocí vývojářských nástrojů prohlížeče.

Shrnutí

  • Zámek znamená: zašifrováno a správný název. Neznamená: důvěryhodné.
  • Http vždy přesměrujte na https, nejprve na stejném názvu, a z jednoho místa.
  • HSTS nechá prohlížeč zapamatovat, že Vaše stránka jde pouze přes https; internet.nl považuje max-age alespoň jeden rok (31536000) za dobré. Zapněte to až ve chvíli, kdy https funguje všude, a budujte to postupně.
  • X-Content-Type-Options: nosniff, frame-ancestors (nebo X-Frame-Options) a Referrer-Policy jsou jednoduché; úplná Content-Security-Policy je řešení na míru.
  • Aktualizace Vašeho CMS, pluginů a šablon jsou přinejmenším stejně důležité jako hlavičky.

Kvíz

1. Čemu přesně HSTS zabraňuje?



2. Zapnete Strict-Transport-Security: max-age=31536000; includeSubDomains. O týden později vyprší certifikát shop.example.com. Co si všimnou stálí návštěvníci?



3. Jakou max-age považuje internet.nl za minimálně dostatečnou pro HSTS?



4. Proti čemu chrání Content-Security-Policy: frame-ancestors 'self'?



5. V adresním řádku vidíte zámek na mijnbank-veilig.example. Co z toho víte s jistotou?



Úkol

Úkol A4.2: Kontrola https, HSTS a hlaviček Vaší webové stránky. Zadejte doménové jméno Vaší webové stránky (pokud žádné nemáte, použijte internet.nl). Program otevře http:// a https:// Vaší domény a zkontroluje certifikát, přesměrování na https, HSTS a bezpečnostní hlavičky. U každého bodu dostanete zelenou, oranžovou nebo červenou s vysvětlením.

Úkol A4.2: Kontrola https, HSTS a hlaviček Vaší webové stránky

Vyplňte doménové jméno Vaší webové stránky (pokud žádnou nemáte, použijte internet.nl). Program otevře http:// a https:// Vaší domény a zkontroluje certifikát, přesměrování na https, HSTS a bezpečnostní hlavičky. Poté vyplňte max-age HSTS.



Co vyplníte a co zjistíme, neukládáme. Váš prohlížeč si pamatuje Vaše odpovědi a to, zda jste úkol splnili. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol měli (téměř) správně; i to tam můžete odstranit.

Úkol D4.2: Aktualizace a úklid Vašeho webu. Přihlaste se do správy Vaší webové stránky, zkontrolujte verzi Vašeho CMS, pluginů a šablon, odstraňte to, co nepoužíváte, a zapněte automatické aktualizace, kde je to možné. Odškrtněte checklist a odpovězte na reflexní otázku.

Úkol D4.2: Aktualizace a úklid Vašeho webu

Postupujte takto: (1) Přihlaste se do správy svého webu (nebo požádejte svého webového vývojáře, aby to udělal společně s Vámi). (2) Poznamenejte si verzi svého CMS a zkontrolujte, zda jsou k dispozici aktualizace. (3) Vytvořte zálohu (lekce 6.1), nainstalujte aktualizace CMS, pluginů a šablon. (4) Odstraňte pluginy a šablony, které nepoužíváte. (5) Zapněte automatické aktualizace, kde je to možné. (6) Zkontrolujte, jaké správcovské účty existují, a odstraňte účty lidí, kteří už u Vás nepracují. (7) Zapněte dvoufázové ověření pro každý správcovský účet.




Vaše zaškrtnutí a poznámky zůstávají pouze v tomto prohlížeči; nikam je neposíláme. Pokud jste přihlášeni, ukládáme v sekci Moje kurzy pouze to, že jste úkol splnili.

Doporučená literatura

Kroky v článcích WebOké platí pro prostředí WebOké; u jiných poskytovatelů to funguje podobně.

Chvíli strpení…

Nastavení vašich domén

U každé domény nastavte jmenné servery, propojení s hostingem a to, kdo bude držitelem.

Načítání vašich domén…