Smíšený obsah - rozbité stránky a bezpečnostní riziko
21.8.2015 | Jindřich Zechmeister
Smíšený obsah je záludná věc a noční můra tvůrců webových stránek. Zároveň se jedná o nejjednodušší cestu, jak obejít HTTPS protokol. V tomto článku se podíváme, jak se smíšeným obsahem pracují moderní prohlížeče a jak se dá v kódu webu najít a opravit.
Smíšený obsah je záludná věc a noční můra tvůrců webových stránek. Zároveň se jedná o nejjednodušší cestu, jak obejít HTTPS protokol. V tomto článku se podíváme, jak se smíšeným obsahem pracují moderní prohlížeče a jak se dá v kódu webu najít a opravit.
Co je to smíšený obsah?
Termín vyjadřuje obsah na stránce zabezpečené HTTPS protokolem, který je načten jako plaintext nezabezpečeným protokolem. Při načítání se tedy vyhne HTTPS protokolu a šifrování SSL certifikátem.
Nejčastěji se smíšený obsah týká externího obsahu webu, jako jsou obrázky, skripty a různé bannery. Někdy se však i CSS styl webu načítá jako smíšený obsah, což v důsledku způsobí zobrazení webu bez CSS; a to je velký problém.
Moderní prohlížeče smíšený obsah blokují
Moderní prohlížeče vyhlásily smíšenému obsahu válku a nekompromisně blokují potencionálně nebezpečné zdroje, jako jsou skripty (aktivní prvky). "Pasivní" prvky, jakou jsou obrázky a audio, zatím neblokují; tyto "neškodné" prvky však způsobují upozornění na smíšený obsah a špatné zobrazení přítomnosti HTTPS na webu. To je problém zejména u EV certifikátů se zeleným pruhem, který je tímto narušen.
Zablokovaný obsah poznáte podle typického trojúhelníku v případě Chrome, štítu u Firefoxu a textové výstraze v případě Internet Exploreru.
Smíšený obsah ve Firefoxu a Chrome. Zdroj: mozilla.org a autor
Pokud obsah ručně nepovolíte, nebude obsah načten.
Následující tabulka ukazuje přístup moderních prohlížečů k jednotlivým prvkům:
Browser | Images | CSS | Scripts | XHR | WebSockets | Frames |
---|---|---|---|---|---|---|
Android browser 4.4.x | Ano | Ano | Ano | Ano | Ano |
Ano |
Chrome 33 | Ano | Ne | Ne | Ano | Ano | Ne |
Firefox 28 | Ano | Ne | Ne | Ne | Ne | Ne |
Internet Explorer 11 | Ano | Ne | Ne | Ne | Ne | Ne |
Safari 7 | Ano | Ano | Ano | Ano | Ano | Ano |
Blokování jednotlivých prvků v prohlížečích. Zdroj: Ivan Ristic, qualys.com
Smíšený obsah nejsou jen obrázky, ale i bezpečnostní problém
Kdyby bylo riziko smíšeného obsahu pouze v nezobrazujících se obrázcích, nebylo by to příliš důležité. Jedná se však o bezpečnostní riziko, protože smíšený obsah je v současnosti nejjednodušší způsob, jak HTTPS překonat.
Jak všichni určitě víte, nezabezpečené spojení přes HTTP je možné odposlouchávat a můžete se stát cílem útoku Man in the middle. Proto používáme SSL certifikáty. Do zabezpečeného a šifrovaného obsahu útočník samozřejmě nezasáhne, ale může pozměnit načítaný obsah. Vzniká tím riziko phishingu, nakažení malwarem nebo napadení prohlížeče uživatele.
Jak problém vyřešit?
Doporučujeme smíšenému obsahu předcházet a na webu používat pouze relativní odkazy, nikoliv absolutní. Absolutní odkaz je takový, který obsahuje celou URL včetně protokolu, tedy například https://www.sslmarket.cz/images/obrazek.png. Relativní odkaz neobsahuje ani protokol, ani URL webu; například /images/obrazek.png. To si prohlížeč doplní sám.
Pokud ručně definujete protokol HTTP, ale začnete načítat stránku přes HTTPS, bude prohlížeč HTTP používat též, a vznikne problém se smíšeným obsahem. A to není vašim cílem.
Nejlepší způsob, jak odhalit prvky způsobující smíšený obsah je analýza pomocí nástrojů prohlížeče. Firefox a Chrome obsahují dobré nástroje pro vývojáře, pomocí kterých zjistíte, jaké prvky se na stránku načítají, odkud a přes jaký protokol.
Ve Firefoxu si otevřete prověřovanou stránku a klikněte na ni pravým tlačítkem. Zvolte Prozkoumat prvek ve Firebugu a dole v prohlížeči uvidíte okno Firebugu. Klikněte na síť a následně pravým tlačítkem na spodní lištu s nadpisy sloupců, viz obrázek. Uvidíte názvy sloupců, které můžete zobrazit. Zobrazte tedy sloupec Protokol, stránku znovu načtěte (F5) a ve výsledcích hledejte prvky načtené přes HTTP. Ty ve zdrojovém kódu opravte buď na HTTPS, nebo upravte cestu na relativní.
Jak najít "škodnou" - smíšený obsah ve Firefoxu.
V Chromu stačí pomocí pravého tlačítka zvolit Prozkoumat prvek a dále Konzolu. V ní se vám zobrazí informace o smíšeném obsahu a konkrétním prvku, který ho způsobuje.
Kontrolu smíšeného obsahu můžete provést i v ověřovači SSL od SSL Labs. Test vám krom jiného řekne, jestli máte na webu smíšený obsah a o jaké prvky se jedná. Test zaměřený čistě na smíšený obsah najdete i na doméně whynopadlock.com. Název domény naráží na nezobrazující se zámeček, což je symbol HTTPS zabezpečení, který při smíšeném obsahu není zobrazován.
Závěr
Máte-li potíž se smíšeným obsahem, nebo jste nově nasadili SSL certifikát na celý web (Always-on SSL, což doporučujeme), měli byste zkontrolovat správnost odkazů a načítaných prvků na webu. Pokud na webu budete mít smíšený obsah, vystavujete návštěvníky riziku a zároveň přicházíte o symboly HTTPS zabezpečení, jako například zelený pruh u EV certifikátu.
Použité zdroje:
HTTPS Mixed Content: Still the Easiest Way to Break SSL. Ivan Ristic, Qualys, Inc.
Jak nezabezpečený obsah ovlivňuje mojí bezpečnost? Mozilla.org
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz