V rámci nové verze Shopia 2.5 jsme zapracovali také na implementaci dalších bezpečnostních opatření, které pomáhají chránit naše klienty a jejich zákazníky. Níže popisujeme konkrétní smysl a přínos těchto opatření. Upozorňujeme, že text je trochu více technický, než jiné články na našem blogu, ale v tomto případě to jinak nejde :)
V uplynulých dnech jsme na naše cloudové prostředí nasadili další dvě HTTP bezpečnostní hlavičky – Referrer-Policy a Strict-Transport-Security. Do verze 2.5 jsme pak přidali i implementaci standardu Subresource Integrity.
Aktuálně tedy Shopio podporuje následující HTTP bezpečnostní hlavičky:
- Strict-Transport-Security – nové
- Referrer-Policy – nové
- X-Content-Type-Options
- X-Frame-Options
- X-Xss-Protection
E-shopy, které běží na našem cloudovém prostředí tak dosáhnou na hodnocení A na webu https://securityheaders.com/, který hodnotí HTTP bezpečnostní hlavičky, a A+ na webu https://www.ssllabs.com/ssltest/, který hodnotí nastavení HTTPS.
HTTP Strict Transport Security
HTTP hlavička Strict-Transport-Security říká prohlížeči, aby pro danou doménu vždycky použil zabezpečený protokol HTTPS, který už v dnešní době používají všechny aktuální e-shopy, běžící na Shopiu. Prohlížeč si toto nastavení pamatuje (aktuálně 1 rok) a neumožní načtení stránky z dané domény na HTTP protokolu např. v případě útoku „man-in-the-middle“. Pomocí této hlavičky je možné vyžádat i zařazení na tzv. preload list, tedy seznam domén, které používají výhradně HTTPS protokol a který je integrován do prohlížečů. Je-li doména na tomto seznamu, prohlížeč neumožní její načtení na nezabezpečeném HTTP protokolu, aniž by návštěvník někdy v minulosti daný e-shop navštívil. Zařazení domén na tento seznam, ale nemůžeme zapnout všem, protože nutnou podmínkou je fungování všech subdomén (tedy i těch, kde neběží e-shop) na zabezpečeném protokolu HTTPS.
Referrer-Policy
Nastavení Referrer-Policy na hodnotu strict-origin-when-cross-origin zajišťuje, že se při kliknutí na odkaz, který vede mimo váš e-shop, odkazovaná stránka nedozví, odkud přesně návštěvník přichází. V případě, že cílová stránka běží na HTTPS protokolu, což je dnes již běžné, dostane informaci o doméně, ze které návštěvník přichází, tedy bude vědět, že návštěvník přichází odněkud z vašeho e-shopu. Běží-li na nezabezpečeném HTTP protokolu, nedozví se vůbec nic, stejně tak ani nikdo po cestě. Toto nastavení funguje nezávisle na atributech odkazu.
Pro názornost uvedeme příklad:
Na stránce https://demo.shopio.cz/p/tyn-96-usb-solarni-nabijecka/ je odkaz na https://www.bootiq.io/. Když návštěvník na odkaz klikne, stránka https://www.bootiq.io/ dostane informaci, že návštěvník přichází ze stránky https://demo.shopio.cz, ale už neví, ze které stránky přesně. Dále je zde odkaz http://www.usbgeek.com/prod_detail.php?prod_id=0195, když na něj návštěvník klikne, odkazovaná stránka se nedozví, odkud návštěvník přichází, protože běží na nezabezpečeném protokolu HTTP. Pokud návštěvník přejde na jinou stránku e-shopu např. https://demo.shopio.cz/c/usb-zarizeni/, dozví se odkazovaná stránka úplnou adresu stránky, ze které návštěvník přichází.
Subresource Integrity
Subresource Integrity je standard, který umožňuje zabezpečit javascriptové knihovny, které se načítají z CDN sítí, proti neoprávněným změnám, které by mohly v případě napadení umožnit útočníkům přístup k prohlížeči a obsahu stránky. Nutnou podmínkou je, aby CDN síť měla korektně nastavenou Access-Control-Allow-Origin HTTP hlavičku (CORS). Zabezpečení pak funguje jednoduše, vygeneruje se otisk souboru knihovny, který se vloží do stránky, a prohlížeč při načtení kontroluje, zda-li se uvedený otisk shoduje s otiskem stahovaného souboru. Pokud by se otisky souborů lišily, prohlížeč stahovanou knihovnu ignoruje.
Více informací o bezpečnostní hlavičkách najdete např. na https://infosec.mozilla.org/guidelines/web_security.html nebo česky na https://securityheaders.cz/.
Pokud byste ohledně těchto bezpečnostních opatření potřebovali cokoli upřesnit, neváhejte nás prosím kontaktovat.