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 FirefoxuChrome a mixed content

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:

BrowserImagesCSSScriptsXHRWebSocketsFrames
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í.

Firefox jak najít mixed content

 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 


Ing. Jindřich Zechmeister
Specialista pro bezpečnostní SSL certifikáty
DigiCert TLS/SSL Professional
e-mail: jindrich.zechmeister(at)zoner.cz