Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

1. diel - Úvod do bezpečnosti webových aplikácií

Bezpečnosť webových aplikácií je v dnešnej dobe dôležité, avšak často opomínané téma. V tomto kurze sa najskôr zoznámime s webovou aplikáciou a jej architektúrou, aby sme mali napríklad prehľad, v akej vrstve útočník špára. Potom si povieme niečo o konkrétnych bezpečnostných hrozbách a pri každej z nich si uvedieme možnosti, ako sa pred ňou chrániť. Uvedieme si napríklad phishing, to je metóda, pri ktorej sa z nás útočník snaží dostať citlivé informácie. Ďalší príklad môže byť útok zvaný SQL injection, pri ktorom sa útočníkovi podarí získať alebo zmeniť dáta v databázovej tabuľke za využitie chytro použitého príkazu SQL. To je len pre kratšie úvod, ukážeme si toho oveľa viac:)

Webová aplikácia

Webovú aplikáciou sa rozumie taká aplikácia, ktorá je poskytovaná užívateľom z webového servera cez počítačovú sieť. Užívateľ používa aplikáciu skrze klienta, ktorý je v tomto prípade webový prehliadač. V rámci webových aplikácií je webový prehliadač často označovaný ako tenký klient, pretože prehliadač sám o sebe nepozná logiku aplikácie.

V dnešnej dobe sú webové aplikácie veľmi populárny, hlavne vďaka rade užívateľsky prívetivých výhod. Oproti náprotivku webové aplikácie v podobe aplikácie typu klient-server nemusí užívateľ nič inštalovať, dokonca nemusí nič aktualizovať a pre prácu s aplikáciou mu postačí obyčajný webový prehliadač. Medzi ďalšie výhody tiež patrí to, že sú dáta uložené v databázovom serveri a sú prístupné odkiaľkoľvek. Medzi nevýhody webových aplikácií môže spadať nutnosť pripojenia k internetu as tým spojený možný pomalý tok dát pri preťažení siete. Ako ďalšie nevýhody možno považovať už spomínané bezpečnostné riziká, o ktorých si viac povieme v ďalších lekciách.

Webových aplikácií je dnes celá rada, ako príklad si môžeme uviesť e-mailovej schránky, internetová bankovníctvo, sociálne siete, e-shopy, informačné systémy, diskusné fóra alebo tiež sieť ITnetwork.

Webové aplikácie sú typicky navrhnuté za použitia trojvrstvovej architektúry. Prvá vrstva je prezentačná, ktorú tvorí webový prehliadač. Druhá čiže stredná vrstva je logická, ktorá tvorí nástroj pre dynamické generovanie HTML stránok. Posledná vrstva je dátová a tvorí ju databázový server. Webový prehliadač komunikuje so strednou vrstvou zasielaním požiadaviek, stredná vrstva potom zasiela dotazy do databázy a generuje užívateľské rozhranie v podobe webových stránok:

Znázornenie princípu trojvrstvovej architektúry webových aplikácií. - Bezpečnosť webových aplikácií v PHP

Znázornenie princípu trojvrstvovej architektúry webových aplikácií.

Rad webových aplikácií je napísaná v čistom programovacom jazyku (napríklad PHP). Optimálnejší cestou pre tvorbu webovej aplikácie je použiť tzv. Framework, pre PHP je to napríklad Nette, CodeIgniter, Laravel, Symfony, ... framework ponúkajú programátorom rad výhod, ako je napríklad vyvarovanie sa rôznym bezpečnostným chybám.

Model ISO / OSI

Ktoré si niečo povieme o bezpečnostných rizikách webových aplikácií, poďme si predstaviť model ISO / OSI, ktorý bol roku 1984 prijatý ako medzinárodná norma. Účelom modelu ISO / OSI je poskytnúť základ pre vypracovanie noriem na účely prepájanie systémov. V podstate model neopisuje implementáciu, ale naopak zavádza princípy sedemvrstvovej sieťové architektúry. Pri každej z vrstiev uvádza ich funkcie a služby:

  • Fyzická vrstva (Physical layer) - najnižšia vrstva komunikácie, ktorá udržuje, aktivuje a deaktivuje fyzickej spoje medzi koncovými systémami.
  • Linková vrstva (Link layer) - poskytuje spojenie medzi dvoma susednými systémami. Stará sa o usporiadanie dát z fyzickej vrstvy do tzv. Rámcov.
  • Sieťová vrstva (Network layer) - zariaďuje smerovanie v sieti a sieťové adresovanie. Poskytuje spojenie dvoch systému, ktoré spolu priamo nesusedia.
  • Transportná vrstva (Transport layer) - poskytuje prenos dát medzi koncovými uzlami, medzi najznámejšie protokoly patrí UDP a TCP.
  • Relačná vrstva (Session layer) - zariaďuje organizáciu a synchronizáciu dialógu medzi účastníkmi relačnej vrstvy oboch systémov.
  • Prezentačná vrstva (Presentation layer) - zariaďuje transformáciu dát do tvaru, ktorý požaduje aplikácie.
  • Aplikačná vrstva (Application layer) - účelom vrstvy je poskytnúť aplikáciám prístup ku komunikačnému systému a umožniť tak ich spoluprácu.

V praxi sa skôr uplatňuje model TCP / IP, ktorý obsahuje iba štyri vrstvy:

Rozdiely modelov ISO / OSI a TCP / IP. - Bezpečnosť webových aplikácií v PHP

Rozdiely modelov ISO / OSI a TCP / IP.

  • Vrstva sieťového prístupu - najnižšia vrstva komunikácie, umožňuje prístup k sieťovému médiu.
  • Sieťová vrstva - podobne ako v ISO / OSI zariaďuje vrstva smerovanie v sieti a sieťové adresovanie.
  • Transportná vrstva - opäť podobne ako v ISO / OSI zaisťuje prenos dát medzi koncovými uzlami a ich celistvosť.
  • Aplikačná vrstva - obsahuje protokoly k prenosu konkrétnych dát, sú to napríklad FTP a HTTP.

Bezpečnosť webových aplikácií

V dnešnej dobe väčšina firiem chráni svoje infraštruktúry pomocou bezpečnostných technológií. Celkom úspešne tak chráni nižšie vrstvy aplikačnej komunikácie opísané v modeli ISO / OSI. Medzi tieto technológie spadajú napríklad firewally, ktoré plnia funkciu paketových filtrov, alebo tiež IDS (I ntrusion d etection s YSTÉM), čo je systém, ktorý monitoruje sieť a upozorňuje na podozrivú komunikáciu. Bohužiaľ tá najvyššia vrstva, vrstva aplikačné, je implementácia bezpečnostných prvkov zanedbávaná. Medzi hlavné dôvody patrí nízke povedomie o možných chybách na strane vývojárov. Na druhej strane sa tiež prejavuje neschopnosť zákazníka prejaviť jasné požiadavky na vývoj aplikácie a jej bezpečnosť. Medzi útoky na aplikačnú vrstvu sa radí najmä Cross-site scripting (XSS) a už spomínaný SQL injection o ktorých sa spoločne dozvieme v ďalších lekciách.

Web application firewall

W eb a pplication f irewall, skrátene WAF, je nástroj pre ochranu webových aplikácií pred útokmi na aplikačnú vrstvu. Od klasických firewallov sa líšia v tom, že WAF je schopný vyfiltrovať obsah špecifických webových aplikácií, zatiaľ čo obyčajný firewall slúži len ako akýsi bezpečnostný checkpoint, ktorý sa na obsah nepozerá. Vďaka filtrovanie obsahu je WAF schopný zabrániť mnohým bezpečnostným útokom, tým že blokuje HTTP prevádzka obsahujúce podozrivý obsah. WAF nie je ultimátnej ochranou aplikácie pred útokom. Snažia sa ochrániť iba 7. aplikačnú vrstvu, mal by preto byť použitý spolu s bežnými firewally a inými bezpečnostnými technológiami, ktoré sa starajú o ochranu nižších vrstiev.

Nižšie je pekne znázornený obrázok reprezentujúci firewall priamo od CloudFlare:

Web application firewall - Bezpečnosť webových aplikácií v PHP

WAF typicky používa pre ochranu aplikácie takzvaný pozitívny alebo negatívny bezpečnostný model alebo ich kombináciu. Oba prístupy pracujú na rovnakom princípe, blokujú či povoľujú komunikáciu na základe vopred nastaveného zoznamu pravidiel. Pozitívne bezpečnostný model prijíma pravidlá v podobe povolených vstupov, s každým pridaným pravidlom sa objem povolených vstupov zväčšuje. Ak modelu nie sú zadané žiadne pravidlá, tak blokuje všetku komunikáciu. Na druhej strane spektra negatívne bezpečnostné model prijíma pravidlá v podobe vstupov, ktoré sú zakázané a s každým pridaným pravidlom sa zväčšuje objem zakázaných vstupov. Na rozdiel od pozitívneho modelu, pokiaľ nie sú zadané žiadne pravidlá, model povoľuje všetku komunikáciu. Oba modely sú teoretické a v praxi sa užíva prístup, ktorý spadá niekde na pomedzí oboch modelov.

Na trhu existujú komerčné WAFy medzi ktoré patrí napríklad Šučur Website Firewall, AppTrana či CloudFlare WAF. Existuje ale tiež pár open-source WAFů, medzi ktoré môžeme zaradiť ModSecurity, AQTRONiX WebKnight alebo NAXSI. WAF bez skupiny pravidiel, ktorými sa bude riadiť, je ale zbytočný. Existujú preto tiež open-source sady pravidiel. Ako príklad si môžeme uviesť sadu pravidiel spoločnosti OWASP, ktorú je možné použiť s open-source enginom ModSecurity.

V ďalšej lekcii, Technika útoku SQL injection , sa zoznámime s útokom SQL injection.


 

Všetky články v sekcii
Bezpečnosť webových aplikácií v PHP
Preskočiť článok
(neodporúčame)
Technika útoku SQL injection
Článok pre vás napísal Jan Hranický
Avatar
Užívateľské hodnotenie:
1 hlasov
Aktivity