První kapitola vám popíše základní jazyk a transportní protokol na webu a také vás v rychlosti seznámí se systémem, jímž jsou webové aplikace stavěny...
Jazyk HTML
Tento vyjadřovací prostředek slouží hlavně pro prezentaci dat vaší aplikace. Ukazuje návštěvníkům vše, co chcete, aby viděli. Tento jazyk však skrývá i jisté nedostatky, na které nyní upozorním:
Existují tagy, jež mohou být při nesprávném použití zneužity. Ty jsou definovány tagem <INPUT>, což je uživatelský vstup. Nejčastěji zneužívaným druhem vstupu je takzvané "skryté pole", <INPUT TYPE=HIDDEN> které je mylně považováno za bezpečnou úschovnu informací, které nechcete klientům ukázat. Obsah této značky se sice v prohlížeči nezobrazí, ale je přenášena s ostatními INPUTY na jednom formuláři. Obsah může tedy jakýkoli klient jednoduše upravit a poslat upravený zpět na váš server.
Jazyku HTML, alespoň v jeho základní podobě, už však takřka "odzvonilo" a do popředí se dostávají jeho mutace, zejména pak XML (eXtensible Markup Language), jenž je na nejlepší cestě svého tatínka definitivně odstranit. Navíc obrovskou výhodou na webu je možnost jazyka PHP, jenž umožňuje dodávat na web plnohodnotné a velmi kvalitně zabezpečené programy.
Transportní protokol HTTP
K jeho základní charakteristice poznamenáme, že na vašem počítači pracuje nejraději na portu TCP 80, ale umí se přepojit na kterýkoli jiný. Využívá primitivního systému požadavek - odpověď. HTTP udává způsob vyslání požadavku na zdroj a ten jej vrací zpět, pokud je dostupný. Prostředkem k této komunikaci je URI, neboli Uniorm Resource Identifiers.
Ukážeme si příklad požadavku pomocí nástroje NetCat, jenž se nejdříve připojí na server a na jeho port TCP 80. Pak zadá primitivní požadavek "neco.html", který potvrdíme dvojím stisknutím Enteru. Server odpoví způsobem, který představuje úspěšné vrácení požadavku a předá data klientovi.
c:>nc -vv www.nejaka-domena.cz 80
www.nejaka-domena.cz [185.14.123.56] 80 (http) open
GET /nejaka-stranka.html HTTP/1.0
HTTP/1.1 200 OK
Date: Thu, 17 Nov 2005 15:25:45
Server: Apache/1.3.22 (Unix)
Connection: close
Connect-type: text/html
Jak vidíte, spuštění jednoho dotazu na server je primitivní, ale odhalí poměrně cenné informace. Odpověď odkryla přesný typ serveru, který doména používá
a používaný operační systém.Další důležitou vlastností protokolu HTTP je, že je bezstavový, tzv. není zde udržován "stav relace". Pokud vyšlete několik požadavků na stejný zdroj, server považuje každý z nich za samostatný a jedinečný.
Tato chyba je upravena pomocí souborů cookie. Ty upravují HTTP, téměř jako by byl stavový. Cookies však nejsou naprosto dokonalé, zvláště jsou-li špatně implementovány. Navíc dochází k problémům a sporům v osobním soukromí uživatelů, kteří jsou pomocí Cookies identifikováni. Pak je protokol HTTP založen na ASCII kódování, které je zaznamenáváno formou textu, takže není problém kód přečíst bez nutnosti dekódování.
Vyjímkou je použití protokolu SSL/TLS(Secure Socket Layer/Transport Layer Security). Ten šifruje transportní vrstvu. Nedělá však již nic jiného, než že zabraňuje, nebo spíše znesnadňuje odposlouchávání komunikace klient - server.
TLS je verzí SSl a používá port TCP 443.
Zvláštním typem protokolu je tzv. ověřování. HTTP využívá k ověřování nejčastěji tyto protokoly:
Basic - Jméno uživatele a heslo jsou zapsány ve snadno dekódovatelné šifře zvané Basic-64, která je zapsána v podobě textu.
Digest - Narozdíl od Basicu nelze hesla získat ve formě psaného textu.
Pomocí formuláře- Formulář je zpracováván na straně serveru a využívá souboru cookie pro sledování stavu "přihlášen".
Klientské certifikáty - Málo používaný. Protokol SSL/TLS kontroluje pravost digitálního certifikátu.
Ověřovací protokoly od Microsoftu
NTLM- Implementováno v hlavičkách HTTP, kde se používá již zmíněného systému požadavek - odpověď.
Microsoft Passport - Mechanizmus využívá klíč sdílený mezi firmou Microsoft a partnerským serverem.
Negotiate neboli vyjednávání - Klient a server se dynamicky dohodnou na kterémkoli protokolu ze seznamu Basic, Digest, ověřovací formulář, NTLM a Kerberos pro MS IE 5 a vyšší.
Další protokoly
Kromě nebezpečně jednoduchého HTTP, který je schopen komunikace pouze na bázi ASCII se používá protokol MIME (Multipart Internet Mail Extensions) pro přenos binárních dat. Webové aplikace dále používají protokol SMTP pro el. poštu nebo FTP pro přenos souborů. Dalším protokolem je pak WebDAV (Web Distributed Authoring and Versioning). Ten však využívá zápisu dat přímo na server, což, dle mnoha odborníků, není dobrý nápad.
Základ webové stavby
Nyní si představte svoji webovou aplikaci jako obrovský dům, jenž má libovolné množství pater. Představte si hackera jako zloděje, jenž se snaží ukrást drahocenný obraz ze svrchního patra domu. Zloděj samotný zde představuje požadavek na váš web. Nejdříve ho k vám vyšle jeho šéf, jenž představuje webového klienta. Cestě, kterou zloděj urazí, než se k vám dostane, říkáme přenos požadavku. Dorazí k bráně vaší parcely. To je první překážka. V tomto světě se nazývá webový server. V případě, že je zamčená, pokusí se ji přelézt, obejít. Vy však už při stavbě máte možnost předejít tomu, aby se zloděj vůbec dostal za bránu, za první zeď. Stačí bránu opatřit kvalitním zámkem a zeď postavit dostatečně vysokou a stabilní, případně její vrchol opatřit ostnatým drátem :-) K tomu se však ještě dostaneme.
Pokud se zloděj dostane na váš pozemek, dojde ke dveřím domu. Ty musí být v každém případě zamčené na dva západy! Váš samotný dům představuje webovou aplikaci, která už je velmi citlivá. Jak si později řekneme, musíte si dát obrovský pozor na všechna okna v přízemí. Musí být zavřená a zajištěná. V takovém případě se nemůže nic stát. Pokud však máte aplikaci nezajištěnou, zloděj má téměř vyhráno. Vyjde do patra, v němž je onen obraz, který je uložen v galerii se spoustou dalších drahých obrazů. Této pomyslné galerii zde říkáme databáze a obrazy jsou data.
Pokud se zloděj napojí na databázi, dílo je dokonáno. Má přístup k datům uloženým na server, mnohdy velmi citlivým. Pokud máte například na svém webu přihlašovací mechanismus, hacker vidí data, jež jsou přístupná pouze autorizovaným osobám, jako jsou telefonní čísla přihlášených nebo dokonce, v nějaké firmě, mnohem choulostivější typy informací.
Další upozornění: Buďte opatrní na takzvané "sociotechnické inženýrství". Zloděj přijde k domu, zazvoní, řekne, že je od pojišťovny a vy ho pustíte do galerie. Ošidně jednoduchý způsob hackingu, ale překvapivě účinný. Dávejte si pozor a nevěřte nikomu, u koho nemáte stoprocentní jistotu, že je to opravdu správce hostingu, opravář HW a tak dále. Správně provedený sociotechnický útok dokáže být stejně účinný jako ten technický.
To je k první kapitole vše. V té další se podíváme výrazně blíže na svůj "dům".