Your .htaccess file does not contain all recommended security headers

By | 06/04/2021

Last Updated on 07/02/2022 by administrator

Your .htaccess file does not contain all recommended security headers

Motivace:

U WordPressu se při kontrole stavu webu může objevit doporučení pro zapnutí bezpečnostních hlaviček (security headers) s hláškou Your .htaccess file does not contain all recommended security headers.

Your .htaccess file does not contain all recommended security headers

Nasazením hlaviček lze nastavit bezpečnostní pravidla mezi webovým prohlížečem a serverem a lze ochránit nejen web před různými typy útoků, ale také návštěvníky, na které můžou být útoky vedeny. Je to novější způsob aktivní ochrany webu a aplikací a podporují je všechny moderní webové prohlížeče, zatímco starší prohlížeče by je měly ignorovat [11].

Tyto bezpečnostní hlavičky lze doplnit do souboru .htaccess manuálně, nebo elegantněji pomocí níže uvedeného pluginu, což popisuje tento příspěvek.

Implementace:

Stáhnout a nainstalovat plugin HTTP Headers. Jedná se o plugin s nastavením mnoha druhů HTTP hlaviček:

install new plugin
.htaccess security headers

Po aktivaci se plugin objeví v Settings > HTTP Headers:.htaccess security headersKliknout na SECURITY:

.htaccess security headers

Zde jsou nastaveny všechny povinné HTTP hlavičky (Status On). Případně jsem připravil i export tohoto nastavení. Soubor je možné stáhnout zde. Ten odzipovat a následně je možné jej importovat přes “Advanced settings”. U hlavičky Expect-CT nezapomenout přepsat Vaší webovou stránku:

.htaccess security headers

Pozn. Nastavení hlavičky “Permission-Policy” není úplně povinné nicméně zlepší se rating Vaší stránky na securityheaders.com (o tom níže).

Test bezpečnostních hlaviček:

Přítomnost bezpečnostních hlaviček na Vašem webu se dá otestovat na stránkách securityheaders.com. Po nastavení HTTP hlaviček doporučuji počkat i 1 min, než je tato stránka zaregistruje.

securityheaders.com

Význam nastavených parametrů a krátky popis bezpečnostních hlaviček:

HTTP Strict Transport Security (HSTS):

Hlavička informuje prohlížeč, že má webovou stránku načítat pouze přes zabezpečený HTTPS protokol. Používá se k ochraně před útoky typu “man-in-the-middle”. [3]

#max-age - po stanovenou dobu (sekundy) se bude komunikovat pouze přes HTTPS protokol.
#includeSubDomains - nastaví, že i subdomény musí být zabezpečeny a mít SSL certifikát.
#preload" - zajistí, po otestování, umístění do preload seznamu distribuovaného do prohlížeče.
Strict-Transport-Security: "max-age=31536000"; includeSubDomains; preload

Content-Security-Policy (CSP):

Hlavička snižuje rizika XSS zranitelnosti a vkládání zákeřného kódu útočícího na uživatele. [4]

#upgrade-insecure-requests - prohlížeč bude vynuceně načítat vše z HTTPS. 
Content-Security-Policy "upgrade-insecure-requests"

X-Frame-Options:

Hlavička zakazuje vkládání webu či jeho části do jiných webů a ochraňuje uživatele od zneužití pomocí tzv. „clickjackingu“. [9]

#SAMEORIGIN - omezení na použití v rámu v rámci domény.
X-Frame-Options "SAMEORIGIN"

X-Content-Type-Options:

Hlavička sděluje prohlížeči, aby ověřoval, zda zdroj má v hlavičce správně nastavený MIME typ. Zvyšuje se bezpečnost uživatele před škodlivým obsahem. [5]

#nosniff - zakázání sniffingu.
X-Content-Type-Options "nosniff"

X-XSS-Protection:

Hlavička X-XSS-Protection povoluje využití zabudovaného filtru proti XSS (cross-site scripting attacks). Jedná se o další vrstvu zabezpečení. [6]

#1; mode=block - Ochrana XSS je aktivována, prohlížeč při útoku stránku nezobrazí.
X-XSS-Protection "1; mode=block"

Referrer-Policy:

Hlavička umožňuje kontrolovat a omezit hodnotu v záhlaví Referrer při odkazování na jiné stránky. Správné nastavení může chránit uživatele před zjištěním identity na sociálních sítích při sdílení odkazů nebo omezit dostupné informace pro různé analytické služby. [7]

#no-referrer-when-downgrade - omezení na úroveň protokolu zabezpečení.
Referrer-Policy: "no-referrer-when-downgrade"

Expect-CT:

Hlavička umožňuje kontrolovat dodržování souladu s Certificate Transparency (CT) u certifikátu webových stránek. [8]

#max-age nastavuje maximální čas (sekundy) uchování informací v mezipaměti prohlížeče.
#enforce - režim prohlížeče na prosazování zásad Certificate Transparency.
#report-uri - určuje, kam má prohlížeč zasílat zprávy, pokud neobdrží platné CT informace (pouze pro reporting).
Expect-CT "max-age=7776000, enforce, report-uri="https://zdezadatvasweb.cz/ct-report"

Permissions-Policy:

Hlavička slouží ke zvýšení bezpečnosti aplikací například zakázáním funkcí (mikrofonu, kamery, geolokace, ..). [1]

#microphone=() - Funkce používat mikrofon je zakázána.
Permissions-Policy "microphone=()"

Zdroje:

[1] https://github.com/w3c/webappsec-permissions-policy/blob/master/permissions-policy-explainer.md

[2] https://wordpress.org/support/topic/missing-security-headers-ssl-2/

[3] https://securityheaders.cz/hsts

[4] https://securityheaders.cz/csp

[5] https://securityheaders.cz/x-content-type-options

[6] https://securityheaders.cz/x-xss-protection

[7] https://securityheaders.cz/referrer-policy

[8] https://securityheaders.cz/expect-ct

[9] https://securityheaders.cz/x-frame-options

[10] https://securityheaders.cz/x-download-options

[11] https://securityheaders.cz/


Dobrovolný dar

Pokud Vám tento článek pomohl a rádi byste podpořili tento web a mou tvorbu, můžete tak provést zasláním libovolné částky na číslo účtu 1558701011/3030

Nebo můžete dar poslat kliknutím na tento odkaz Podpořit tento WEB , který Váš přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *