IE8 - rychlost nebo bezpečí? Mám zcela jasno.

Nejjednodušší odpověď je obojí. Ale pokud bych si jako koncový uživatel i jako vývojář měl dnes vybrat, jak se bude produkt umísťovat na světových žebříčcích, asi bych přece jen preferoval zvýšené bezpečí. Tím určitě nechci říci, že IE8 nijak v rychlosti neoslňuje, ale musím dát za pravdu Tomáši Jechovi, který napsal první komentář na můj poslední post o IE8. Ten je na tom v rychlosti interpretace JavaScriptu lépe než IE7, ale bohužel se nemístil na prvních pozicích v testech typu SunSpider. Asi by se dalo polemizovat o nutnosti vyhrát v tomto testu, ale věřím, že jisté a nezanedbatelné skupině uživatelů může tento žebříček připadat užitečný. Mne osobně ne. Proč? Jednak mám pocit, že na stažení stránky často čekám daleko déle než je doba, za kterou proběhne JavaScript, jednak si myslím, že stránek obsahující tisíce řádků kódu v tomto jazyce tvoří pouze malé procento. V dlouhodobém pohledu si navíc myslím, že web aplikace, které za sebou budou nést extenzivní logiku, budou muset být tvořeny v jiných technologiích. Ať je to Microsoft Silverlight, který dnes dovede spouštět bezpečným způsobem aplikaci v nativním kódu, nebo to budou technologie konkurence, jako je Adobe. Pro porovnání výkonnosti JavaScriptu a .NET jazyků v aplikační logice Silverlight komponenty doporučuji vyzkoušet hru šachy (C# vs JS). Jasné, co.

Bezpečnost nade vše

Možná, že jsem paranoidní, ale vždy, když se pohybuji v prohlížeči po internetu, říkám si, jestli jsem pro bezpečnost svého počítače udělal dost. Přesto, že si myslím, že ano, vždy se dozvím o nějakém novém typu útoku. Naposled to bylo, když jsem si četl o bezpečnostních vylepšeních právě zmiňované nejnovější verze Internet Exploreru. Ten obsahuje ochranu proti útoku s názvem Clickjacking. Princip je docela pěkně popsán na stránkách SecTheory. V podstatě spočívá v tom, že útočník obelstí uživatele, jenž zcela nevědomě klikne na odkaz nebo tlačítko a potvrdí tak požadovanou transakci. Typicky povolení přístupu nebo i třeba převod peněz. Jak to provede? Původní webovou stránku, například webshopu, překryje elementem IFRAME bez rámu, jehož obsah je místy průhledný. Z původní stránky tedy zůstane vidět pouze ono klíčové tlačítko a zbytek je překryt zcela neškodným obsahem. Uživatel pak snadno podlehne iluzi, že potvrzuje něco zcela jiného. Tento triviální příklad můžete najít i zde. Pokud vás znepokojil, určitě si předčtěte na odkazu v předchozí větě jako snadno tomuto typu v útoku v IE8 předcházet.

Clickjacking je ovšem pouze jedním z případů něčeho daleko obludnějšího – Cross Site Request Forgery (CSFR). Jak se správně píše na webu Jeremiah Grossmana, proti těmto útokům není jednoduché obrany. Nejde totiž o chybu produktu, nýbrž kombinaci dostupných technologií, jako jsou např. cookies, a sociálního inženýrství. Úlohou prohlížeče je pak tyto triky identifikovat a znemožnit nebo minimálně provést obtížnější. Mezi technologie v IE8 pro eliminaci těchto útoků patří:

  • Cross-Site Scripting Filiter
  • Sanitace HTML (metoda toStaticHTML) a serializace a parsování JSON objektů (metoda JSON.parse a JSON.stringify)
  • Režim InPrivate Browsing
  • Cross-domain Request objekt (XDomainRequest)

A co s ActiveX?

Internet Explorer si svou reputaci bezpečnosti asi nejvíce pokazil technologií ActiveX. Ta umožňuje spouštět v prohlížeči binární komponenty. To má celou řadu výhod, ale i zároveň obrovskou náchylnost k prolomení bezpečnosti. Je zajímavé sledovat, kolik AxtiveX prvků i přes tuto „vadu na kráse“ je na internetu a zejména intranetech používaných. Zrušit jejich podporů v nové verzi by bylo velmi nerozumné, ale ponechat je bez povšimnutí ještě nerozumnější. Na co tedy v IE8 můžete těšit? ActiveX komponenty je v IE8 možné rozdělit na ty, instalované pouze pro aktuálního uživatele „Per-user ActiveX“ a pro danou site „Per-site ActiveX“. Aniž bych zacházel do hlubokých detailů, Per-user ActiveX se instaluje pro použití aktuálního uživatele a pokud tento nemá admin oprávnění, případná bezpečnostní chyba může ovlivnit operační systém do té míry, do které ho může ovlivnit uživatel sám. Pro takovou instalaci nemusí mít uživatel ani administrátorské oprávnění. Instalovat tak může např. i komponentu Silverlightu bez potřebné elevace práv (lze zakázat v Group Policy)

Per-site ActiveX je pak instalací komponenty tak, aby byla použitelná pouze pro dané URL. Tím lze zabránit, aby komponenta byla využita či zneužita z jiného webu.

Žebříček nevítězí

Mým cílem určitě nebylo nepokrýt všechny bezpečnostní novinky v IE8. O těch se lze dobře dočíst na blogu IE8 týmu, pokud si vyberete tag Security. Obdobě může najít popis celé řady nových funkcí z pohledu vývojáře, ke kterým se ještě v budoucnu dostanu. Co jsem však určitě chtěl říci je, že nová verze prohlížeče pro mne dnes má daleko vyšší cenu, pokud v přehledu jeho nových vlastností vidím dlouhý seznam bezpečnostních vylepšení, než jedno číslo určující pozici v rychlostních testech interpretace JavaScriptu. Trochu mi to totiž přijde jako hon za co nejvyšší rychlostí nebo zrychlení auta. Velice mála tuto vlastnost využiju, zatím co 7 airbagů a kvalitní deformační zóny přece jen ocením více.

Dalibor Kačmář, Platform Strategy Advisor