Zranitelný kód - Nejvážnější chyby, kterých se můžete ve svých webových aplikacích dopustit
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zranitelný kód - Nejvážnější chyby, kterých se můžete ve svých webových aplikacích dopustitZranitelný kód - Nejvážnější chyby, kterých se můžete ve svých webových aplikacích dopustit

 

Zranitelný kód - Nejvážnější chyby, kterých se můžete ve svých webových aplikacích dopustit

Google       Google       17. 8. 2009       23 491×

Recenze knihy Zranitelný kód - Nejvážnější chyby, kterých se můžete ve svých webových aplikacích dopustit od Sverre H. Husebyho.

Kniha je určena pro všechny vývojáře webových aplikací a shrnuje základní pravidla, která je nutné znát při programování bezpečných webových systémů. Jak o ní říká sám autor Sverre H. Huseby: "Tato kniha je poněkud zvláštní." Je o bezpečnosti aplikací, ale nezabývá se šifrováním, firewally a podobnými věcmi. Zaměřuje se výhradně na bezpečnost zdrojového kódu.

Už od začátku knihy se nám autor snaží vštípit základní pravidla a postupy, jak se vyvarovat těch nejzávažnějších chyb. Celá kniha je protkána pravidly, která jsou zvýrazněná a očíslovaná. Ke každému pravidlu je vytvořen výstižný popisek, který ho definuje. Díky tomu se při prvním setkání s knihou můžete velice jednoduše a rychle seznámit s jejím hrubým obsahem. Tato pravidla jsou v knize dále rozváděna na příkladech.

Jednotlivé příklady jsou psány v jazycích PHP, Java, Perl, SQL a VBScript. Pro pochopení kódů však není nutné znát všechny tyto jazyky. Stačí umět například PHP a mít základní znalosti z programování (proměnné, cykly, podmínky atd.), protože ukázky kódů jsou psány v co nejkratším možném objemu a přehledně, aby se v nich čtenář neztrácel. Při čtení se však neobejdete bez znalosti HTML, protože se sem tam objevuje. Jde především o formuláře v kapitole o ošetření vstupu.

Líbí se mi, že autor poukazuje na fakt, že bezpečnost není stav, ale proces. Nemůžeme si tedy sednout a říct: "Mám svou webovou aplikaci zabezpečenou, a nic se tedy nemůže stát." Potencionální útočníci jsou často napřed a hlavně přemýšlejí destruktivně, zatímco vývojář aplikace myslí konstruktivně a často ho ani nenapadne, co vše by mohl útočník použít pro nabourání se do systému.

Celá kniha je protkána odkazy na externí zdroje, které slouží k podrobnějšímu studiu. Když autor píše o nějaké věci často, je zde v hranatých závorkách číslo, pod kterým můžete v sekci Odkazy na konci knihy nalézt další zdroj informací. Většinou se jedná o webovou stránku nebo knihu.

Publikace je koncipována tak, aby ji čtenář četl kapitolu po kapitole. Pokud ale máte o problematice bezpečnosti alespoň nějaké znalosti, není problém kapitoly přeskakovat a číst ty, které vás zajímají nebo je potřebujete právě prostudovat. Na začátek však doporučuji přečíst úvodní kapitolu o protokolu HTTP, kde jsou vysvětleny elementární věci o tomto protokolu.

Jednotlivé kapitoly

Kniha je logicky členěna do osmi kapitol. Každá kapitola má jedno hlavní téma, kterého se drží, a snaží se objasnit základní pojmy a dále poukázat na nejčastější chyby, kterých se vývojáři dopouští.

Kapitola 1 - Počátky

V této kapitole se autor stručně vrací do historie, kdy vznikaly protokoly HTTP, WWW apod. Hlavní náplní kapitoly je však rozebrání HTTP protokolu - jak funguje, jaké má záludnosti, nevýhody a výhody. Možná si říkáte, proč je v knize o bezpečnosti webových aplikací kapitola o HTTP. Je to z toho důvodu, aby vývojář pochopil, jak vůbec tento protokol funguje, a vyvaroval se chybám z důvodu nedorozumění. Jsou zde zmíněny také cookies, relace a šifrování HTTP - HTTPS, což už je přímému vývoji aplikací bližší.

Kapitola 2 - Přenos dat do subsystému

Většina složitějších webových aplikací používá nějaký subsystém. Pod subsystémem si můžeme představit například MySQL nebo jinou databázi. Data do ní vkládáme, upravujeme a vybíráme. Každá tato operace by měla být bezpečnostně odladěna. Právě k tomu nám pomůže tato kapitola. Velká část kapitoly je věnována SQL Injection a Shell Command Injection. K oběma zde nalezneme mnoho útržků kódu - jak těch chybných, tak těch zabezpečených.

Kapitola 3 - Vstup uživatele

Každý, kdo někdy psal aplikace, do které uživatelé vkládají data, ví, jaký s tím je problém. Uživatel dokáže vložit opravdu cokoli, a to do těch nejnevhodnějších míst. Proto je nutné nedůvěřovat slepě uživatelům, že zadávají správná data, a vše kontrolovat a ověřovat. Právě o tom je celá tato kapitola. Na příkladech ukazuje, jak by se měly jednotlivé vstupy kontrolovat. Autor také poukazuje na problém s neviditelnou bezpečnostní bariérou.

Kapitola 4 - Ošetření výstupu: útok Cross-site Scripting

Už název kapitoly napovídá, že budeme číst o Cross-site Scripting, který se používá často pro krádeže relací a hesel jednotlivých uživatelů aplikace. Autor varuje před tím, že hodně vývojářů aplikací sice dobře ošetří vstup, ale už se moc nevěnuje výstupu. Toho potom může útočník využít a nabourat se do vaší aplikace.

Kapitola 5 - Trojské koně

Tato kapitola velmi podrobně vysvětluje problém trojských koní a radí, jak se proti nim bránit na straně serveru. Popisuje příklady chování, kdy je uživatel donucen provést akci, kterou by při normálním chování neudělal. To vede k bezpečnostním problémům. Dozvíme se například, kdy je nebezpečné používat metodu GET u formulářů a jak zabránit zneužití aplikace trojskými koni pomocí lístků.

Kapitola 6 - Hesla a další tajné informace

Ochrana uživatelských hesel je jedno ze základních pravidel bezpečné webové aplikace. Autor v této kapitole nejen popisuje, jak hesla dobře ukládat do databáze a pracovat s nimi, ale ukazuje i principy, jak se pokusit hesla prolomit. Dozvíme se o základech kryptologie, ale ne z příliš teoretického hlediska. Autor se snaží oprostit od suchých matematických vzorců a spíše se soustředí na konkrétní příklady. Například symetrické a asymetrické šifrování, které je ukázáno a vysvětleno na obrázcích.

Kapitola 7 - Nepřátelé bezpečného kódu

V této kapitole se autor věnuje faktorům, které přímo ovlivňují kvalitu kódu z pohledu zabezpečení. Je zde zmíněna nepořádnost programátorů, ale také blížící se deadline projektů. Vývojář poté pracuje pod větším tlakem a snáze udělá nějakou chybu, kterou by při "běžném programování" neudělal.

Kapitola 8 - Přehled pravidel pro vytváření bezpečného kódu

V této poslední kapitole autor shrnuje všechna pravidla, která byla popsána v předcházejících kapitolách. Můžete si tak nově nabité vědomosti rychle zopakovat. Tato kapitola může také ale sloužit jako rozšířený obsah - jednoduše si tu dohledáte nějaké pravidlo a přes něj se dostanete na stránku v knize, která ho detailně rozebírá.

Přílohy

V knize dále nalezneme čtyři přílohy, které se věnují chybám ve webovém serveru, zachytávání paketů (Packet Sniffing), odesílání e-mailů ve formátu HTML s falešnou adresou odesílatele a další informace. Jedná se o kratší - pár odstavcové - texty, které nepopisují daná témata podrobně, ale spíše jen chtějí poukázat na tyto problémy. V textu je opět spousta odkazů na externí zdroje, takže si čtenář může další informace bez problémů dohledat.

Kniha Zranitelný kód má také svoji webovou stránku, na kterou se dostanete přes adresu http://innocentcode.thathost.com/. Na ní můžete nalézt předmluvu autora a také seznam důležitých pravidel pro webovou bezpečnost, která provází celou knihu a jsou také shrnuta v kapitole 8.

Závěr

Kniha se mi jako celek líbí. Na několika místech mi ale chyběl detailnější kód. Na druhou stranu se autor takto snaží minimalizovat složitost, čímž přispívá k tomu, že kniha je přístupná i pro méně pokročilé vývojáře. Jako velké plus knihy vidím odkazy na externí zdroje, které se vyskytují na mnoha místech knihy. Celkem jich zde můžeme nalézt téměř 150. Není proto nutné jednotlivé informace zdlouhavě dohledávat na internetu a můžete rovnou přejít na danou webovou stránku.

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

4 názory  —  4 nové  
Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Martin ŠimkoAutor se věnuje problematice SEO - pracuje jako SEO konzultant v agentuře RobertNemec.com a jako freelancer (www.martinsimko.cz). Vystudoval informatiku na FIT VUT a FI MUNI.
Web     Twitter     Facebook     LinkedIn    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Reklama autora

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý