30 let HTML – od počátku mimo trať

14. ledna 2021

HTML vznikl jako součást konceptu World Wide Webu. Záměrem bylo vytvořit globální „pavučinu“ informací propojených odkazy a klíčovým nástrojem byl právě hypertextový značkovací jazyk, jehož vývoj je poznamenán četnými peripetiemi.

Vpisování různých značek do textu je technika starší než první počítač. Tomuto vyznačování se říkalo markup a sloužilo jako pomůcka k formátování obsahu. Teprve nástup počítačů však umožnil, aby se tyto značky mohly stát integrovanou a přitom skrytou součástí dokumentů. K dalšímu významnému posunu došlo v roce 1969, když vývojáři z IBM Charles Goldfarb, Edward Mosher a Raymond Lorie vymysleli systém značkování, který dokument popisoval jako hierarchickou strukturu elementů, kde každému typu elementu přísluší náležité označení. Nazvali ho General Markup Language (GML). Později byl GML v rámci projektu Open Document Architecture přepracován a v roce 1986 standardizován jako Standard Generalized Markup Language (SGML). Sloužil pak jako metajazyk pro textové formáty nezávislé na softwarové a hardwarové platformě. Otec WWW Tim Berners-Lee se při zrodu HTML evidentně inspiroval SGML, leč ne důsledně. První verze byla v podstatě neuspořádanou směsí volně použitelných značek, nazývaných tagy, určených k formátování obsahu webových stránek. S touto nedůsledností si ale zatím hlavu lámat nemusel, protože poté, co dokončil první webový prohlížeč (WorldWideWeb, následně přejmenovaný na Nexus, aby se název prohlížeče nepletl s celým projektem WWW) a zprovoznil první webový server (info.cern.ch), se koncem roku 1990 jeho projekt WWW úspěšně rozjel. O několik let později již stál jakožto slavný vynálezce Webu v čele nově založené standardizační organizace World Wide Web Consortium (W3C), která měla dohlížet na rozvoj WWW, což, jak se záhy ukázalo, nebyl vůbec jednoduchý úkol.

V hávu SGML

Když IETF standardizovala v roce 1995 HTML 2 jako aplikaci SGML, zdálo se, že HTML je tímto krokem zpřístupněn pokročilému zpracování informací nástroji pro konverzi a publikování SGML. Každý dokument formátu SGML s řádně vyznačenou strukturou lze automaticky procházet a selektovat požadované informace podobně snadno (i když pomaleji) jako v databázi. Rovněž kontrola, úpravy a prezentace jsou technicky nenáročné bez ohledu na formu výstupu, která může být různorodá, a to i v rámci stejného výstupního zařízení. V případě HTML však nic z toho tak úplně neplatilo a na vině asi byla ona výše uvedená prvotní nedůslednost. Jednalo se o to, že tvůrci webových stránek „patlali“ zdrojový kód pořád postaru. Většina stránek se proto nedala správně zpracovat, pokud parser HTML nebyl vybaven opravným mechanismem, který nejčastěji řešil rozbitou strukturu dokumentu a vkládal do zdrojového kódu chybějící tagy. Čistotě kódu paradoxně příliš neprospěl ani sám standard SGML, který tvůrcům webových stránek dovoloval vynechávat u některých elementů koncové tagy a u hodnot atributů uvozovky. Ti toho pochopitelně využívali, neboť jim to zkrátilo psaní kódu. Parser však kvůli tomu byl závislý na DTD, protože jedině na základě DTD si mohl chybějící tagy doplňovat. Na syntaxi SGML je bohužel více věcí, kvůli kterým je náročnější na implementaci i na prosté pochopení a, jak známo, větší složitost vede k větší chybovosti. Později byl SGML osekán a zjednodušen, čímž vznikl XML.

Válka prohlížečů

Historie World Wide Webu se nese ve znamení dominantních prohlížečů. Prvním dominantním prohlížečem byl Mosaic, který nabídl přívětivé uživatelské rozhraní. Brzy ho však na trůně vystřídal Netscape, jenž si získal popularitu celou řadou atraktivních rozšíření a inovací (pozadí stránky, zarovnání textu, podpora tabulek, vkládání multimediálních objektů, JavaScript, …). A za několik dalších let se ujal vlády Internet Explorer díky tomu, že byl dodáván společně s operačním systémem, tedy jakoby zdarma. Ale i Internet Explorer nakonec ztratil svou zdánlivě neotřesitelnou pozici a v současnosti dominuje Chrome. Konkurenční boj je samozřejmě zdravý a přínosný, přesto může přinášet i nemalé komplikace, pokud selžou standardizační mechanismy. A přesně to se dělo v prvních deseti letech, než vítězství Internet Exploreru zklidnilo situaci. Ve snaze získat co nejvíce uživatelů se totiž vývojáři prohlížečů na standardy příliš neohlíželi a rozšiřovali HTML o všechno, co je právě napadlo, i když to zrovna nebylo v souladu s normou. Jedním z takových případů byly často využívané podmíněné komentáře v Internet Exploreru. Vypadaly takto: <!--[if IE]> komentář <![endif]--> a byla-li podmínka (v hranatých závorkách) splněna, komentář se proti pravidlům syntaxe SGML vypsal na stránku. Výsledkem soupeření bylo nakonec to, že se implementace HTML v prohlížečích výrazně rozcházela s oficiálními standardy. Dlužno dodat, že ani tvůrci webových stránek se dodržováním standardů příliš neobtěžovali a bylo zcela běžné, že používali tagy a atributy, které nebyly součástí deklarované DTD. Ostatně prohlížeče mají jakousi svoji vlastní DTD, podle níž HTML parsují, takže deklarovaná DTD byla vlastně irelevantní.

A co bezpečnost?

Rychlý vývoj byl do jisté míry nutností, neboť Web byl stále ještě v plenkách a tvůrci webových stránek nedočkavě vyhlíželi, co nového budou prohlížeče umět. Rychlé zavádění nových tagů a atributů a vymýšlení nestandardních technik mělo však také své stinné stránky, především inkompatibilitu, potíže s přístupností a bezpečnostní problémy. Inkompatibilita měla řadu podob a důsledků. Zdaleka nešlo jen o to, že se webové stránky v různých prohlížečích, pokud si to jejich autoři neošetřili, nezobrazovali stejně. Vzhledem k tehdy vysokému podílu starších verzí prohlížečů, bylo nutné zajistit také zpětnou kompatibilitu. Rovněž bylo potřeba řešit i nevizuální zpracování; vyhledávače nebo hlasové čtečky pro nevidomé se potýkaly hlavně s technologií tzv. rámů (angl. frameset, složení jedné stránky z více stránek). Nesoulad se standardy zároveň nepřímo nahrával útokům typu XSS (cross-site-scripting), při kterých útočník přes neošetřený uživatelský vstup nebo parametrickou část URL vkládá do stránky záškodnický javascriptový kód. Modelovým příkladem může být vložený příspěvek do internetové diskuse obsahující kód, který vyvolává falešnou výzvu k zadání přihlašovacích údajů. Identita oklamaných uživatelů se pak stává kořistí útočníka. Problémem bylo hlavně to, že proti útokům XSS neexistovala jednoduchá obrana. Nestačilo prostě jenom blokovat tag , neboť možností, jak vložit JavaScript do HTML, bylo vinou nekoncepčního přístupu při vývoji prohlížečů mnoho a stále se objevovaly další. Základní obranou se proto stalo důsledné nahrazování znaků se speciálním významem tzv. entitami, kupříkladu znak < je zásahem algoritmu parsujícím uživatelský vstup převeden na entitu &lt;, znak & na entitu &amp; atd. Entity se pak v HTML interpretují jako původní znaky z uživatelského vstupu ale už jen jako součást textu. Tento postup ovšem dostačuje jen k ošetření neformátovaného textu. Má-li být umožněno bezpečné formátování textů nebo vkládání odkazů či obrázků, musí přijímaná data projít mnohem sofistikovanějším procesem zpracování. Zde je výčet technik, které lze zneužít pro XSS. Vesměs se jedná právě o nestandardní zpracování HTML a inline skripty. Přestože jsou tyto zranitelnosti známy, z důvodu zpětné kompatibility zůstávají.

Standardizační kontrmelce

Na nepřehledné situaci kolem HTML měli nepochybně lví podíl sami standardizátoři z W3C. Jejich největším pochybením bylo to, že tvořili normy bez návaznosti na skutečný vývoj. Tak se stalo, že verze HTML s označením 3.0 musela být opuštěna, neboť byla tak složitá, že ji nikdo nechtěl implementovat (podporu nabízel pouze experimentální prohlížeč Arena). Místo ní byla přijata konzervativnější varianta 3.2, která do HTML přidávala jen tabulky a formátování textu. Podobný scénář se opakoval o několik let později, když W3C plánovalo nahradit HTML novým jazykem založeným na XML. Proklamovanou výhodou tohoto nového jazyka, podle niž získal i svůj název (eXtensible HTML) byla jeho modularizace, která měla zajistit jeho snadnou rozšiřitelnost. Velkolepý záměr ovšem tvrdě narazil na realitu. Do přechodu na XHTML se nikdo nehrnul, protože starší prohlížeče, zejména ten nejrozšířenější – Internet Explorer 6, XHTML nepodporovaly. Dalším důvodem bylo to, že kromě přísnější syntaxe nepřinášel XHTML nic z toho, co by webdesignéři a vývojáři webových aplikací potřebovali. Nadšení nevyvolala ani rozpracovaná specifikace XHTML 2, ba právě naopak. Návrh této specifikace byl natolik fundamentální a nerealistický, že vyvolal vlnu ostré kritiky. A nezůstalo jen u stížností, iniciativa nespokojenců v čele s Ianem Hicksonem vedla k přípravě současné verze HTML. Práce na novém standardu byla náročná ze dvou hledisek: a) Poslední, čtvrtá verze HTML vyšla ještě v roce 1997 a od té doby se Web výrazně proměnil. Klasické webové stránky se statickým obsahem nabíraly dynamiku a stávaly se více interaktivní, jejich tvůrci ale naráželi na omezené možnosti zastaralého jazyka. Bylo tedy nutné HTML radikálně rozšířit o nové funkce. b) Přetrvávala syntaktická anarchie z raných dob. Náprava tohoto stavu vyžadovala řádně zdokumentovat, jak prohlížeče kód HTML skutečně zpracovávají, a uvést konečně pravidla do souladu s praxí. V teoretické rovině to znamenalo odstřihnout se od SGML a povolený obsah elementů definovat bez DTD. Specifikace HTML 5 byla vydána roku 2014 a představovala vítězství pragmatismu nad akademickým přístupem.

Pokrok

HTML byl původně jen textovým formátem, jeho úspěch však měl za následek další rozvoj. Na HTML se nabalovaly nové webové technologie, které ho rozšiřovaly nebo doplňovaly. První takovou inovací bylo automatické generování stránek prostřednictvím rozhraní CGI. Odezva serverových skriptů ovšem v té době nebyla příliš rychlá, proto se začaly hledat způsoby, jak alespoň část úloh přesunout na klienta – tak se zrodila podpora pluginů a JavaScript. Tento vývoj pokračoval a v souvislosti s HTML 5 ještě akceleroval, jen se od pluginů přesunul k nativní podpoře funkcí. V současnosti lze na webových stránkách přehrávat filmy, editovat soubory, kreslit a dělat mnoho jiných kdysi nemyslitelných věcí. Komplexnost webových technologií je tak velká, že se uplatní i v oborech, které s Webem nemají nic společného. Například ovládací panel americké vesmírné lodi Crew Dragon se skládá ze tří dotykových obrazovek, jejichž grafické uživatelské rozhraní bylo vytvořeno pomocí HTML, CSS a JavaScriptu; výrobce toto řešení vyhodnotil jako nejefektivnější z hlediska rychlosti a jednoduchosti vývoje produktu. Taková komplexnost si však vybírá svou daň, a tou jsou vysoké nároky na systémové zdroje (paměť, výpočetní výkon). Vysoce náročný je pochopitelně i vývoj prohlížečů, které toho musí tolik umět. Zatímco do nástupu HTML 5 platilo, že všechny významné prohlížeče byly vyvíjeny samostatně, dnes je většina z nich jen upraveným klonem Chromia.

Předchozí článek Wordpress na verzi PHP 8
Další článek Lokální WordPress

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *