dagblog.
← Archiv

Atrise HTML lock — špatný vtip na Intervalu


Už, už se zdálo, že doba nekvalitních článku via. klientské skriptování, server Interval 
 minula. Jako vytažení pověstného kostlivce se tak jeví článek se zavádějícím názvem
 Bezpečné HTML stránky.
 Neznalý člověk by si mohl pod tímto nadpisem představit ledascos, protřelejší webdesigner/kodér se jen otřepe a já zakroutím hlavou.

Z principu je funkčnost poskytovaná programem Atrise HTML lock nedobrá. Ze dvou důvodů snaží se řešit neřešitelné
 a zároveň tak činí stránky nepoužitelné. Předem je třeba si uvědomit, že HTML
 je ze své podstaty jazyk popisný, vyjadřuje informace v určité struktuře tak, aby
 mohly být interpretovány v člověku srozumitelné a přívětivé podobě. Z výš uvedeného
 tak plyne, že ke klientu se vždy do prohlížeče dostane ve své nahé kráse. Metody,
 které popisuje článek a plní program jsou jen jakýmisi berličkami. Jeden a tentýž klíč slouží,
 jak pro zakódovaní tak pro dekódování zdroje. Článek, by měl spíše osvětlit klady a zápory takového řešení a nehledat pokoutné cestičky jak ospravedlnit pouze určitý úhel pohledu.

Nuže program jsem si stáhnul a začal testovat. Udělal jsem základní testovací stránku, kterou 
 jsem daný program otestoval.

Pokusná stranka
Ahoj světe, jsem první zašifrovaná stránka

Analýza výsledného kódu

Opravdu jsem  se těšil na výslednou stránku, která z programu vyleze. Zajímalo mě
hlavně jak je řešena dekódovací funkce a výsledný zdrojový kód. Program mě opravdu nezklamal v tom špatném
slova smyslu.

Svévolná změna kódování

První, co mě zarazilo při prohlížení výsledné vygenerované stránky, byla změna 
kódování z původního windows-1250, udělal program iso-8859-1. Stránky by se tak
stalý absolutně nečitelnými, pokud bychom ručně nelaborovali s nastavením kódování
v prohlížeči.

Deratizace DOCTYPE a nevalidní kód

Nuže pustil jsme se do luštění výsledného zdrojového kódu. Programu se zřejmě nelibí použitý DOCTYPE 
takže ho ve výsledku pro jistotu ani nezařadil, snad aby se to některým prohlížečům nepletlo.
S tímto problémem souvisí i tag script. Ve výsledku obsahuje deprecated atribut language, pokud
by původní stránka byla v XHTML, tento atribut by způsobil nevalidní kód, přitom řešení se nabízí
ve formě atributu type. Z výše uvedeného plyne, že program naprosto ignoruje zvolené DTD dokumentu
a vždy natvrdo dosazuje předem danou definici. Pro jistotu jsem, jsem vzal uhodní stranu Dagblogu, která používá
DTD XHTML 1.0 Strict a výsledek byl naprosto stejný.
Při debuggování dekódovací funkce jsme zjistil, že původní stránka je tisknuta na výstup komplet celá. 
Autoři si nedali ani námahu, nechat meta tagy puvodní a svůj kód jen vlepit do těla. Takhle se do těla
stránky(tagu body) znovu tiskne doctype, a všechny tagy počínaje kořenovým html.

Princip šifrovaní

Program má sice výstražnou hlášku, že ochrana takovýmto způsobem je lehce prolomitelná, nicméně mě střeva 
skriptu zajímala. Na první pohled je vidět, že se vše točí kolem dvou polí t a h. V poli h je uschována
zakódovaná stránka v poli t jsou pak jednotlivé znaky sady iso-8859-1(úplně všechny). Podle části zvoleného hesla, konstanty 44
a části šifrovaného kódu se pomocí logického operátoru XOR spočte odpovídajíci pozice znaku v poli t.
Tímto způsobem se pokračuje do sestavení celého řádku.
Použitím debuggeru chudých(tohle spojení mám opravdu rád) alias funkce alert není problém zjistit výsledný zdrojový kód. Funkci alert umístíme v podmínce testující
proměnnou c na rovnost s číslem 13 a necháme si vypsat obsah proměnné s a máme výsledek tisknoucí se pomocí
document.write do výsledné stránky.

Závěrečné resume

Výhody
  • Odradí pár potenciálních “zkoumačů-začátečníků”
Nevýhody
  • funkčnost pouze se zapnutým klientským skriptováním
  • změna kódování — pro stránky s českými znaky nepoužitelné
  • odstranění DOCTYPE — je použita vlastní velice špatná šablona
  • výstupní nevalidní kód
  • výsledný dokument postrádá jakékoliv logické členění
  • naprostá žádná ochrana proti trochu zkušenějšímu uživateli
  • indexace takovéhoto dokumentu, výhledávaní apod.
  • při větší rozsáhlosti dokumentu se zobrazení stránky výrazně prodlouží
Pokud pomineme fakt, že výsledný kód by sice plno uživatelů odradil nicméně pro trochu
zkušenějšího kodéra by nebyl problém se výsledku dopátrat. Z výše uvedeného vyplývá,
že program je opravdu nepoužitelný a nemá cenu se jím zabývat. Z celého řešení
mám pocit ledabile odvedené práce jak z hlediska produktu Atrise HTML lock
tak z článku. Kdyby si dal autor článku trochu prác, tak by zřejmě dospěl ke stejnému
zjištění. Snaha o skrytí zdorjového kódu je marná a zbytečná a jde proti většině
základních pravidel použitelnosti a dostupnosti.

Verze na Medium

Související články

Související epizody CZ Podcastu