Bezpečnost webových aplikací mě zajímá a baví mě ji zkoumat. Je to citlivé téma a každá zapomenutá drobnost může dostat do problémů nejen vás, ale i vaše uživatele. O zabezpečení webu často píšu články a přednáším. Rád vaše vývojáře naučím, jak webové aplikace zabezpečit a jak je na bezpečnost testovat. Školení je vhodné i pro vývojáře, kteří pracují např. v Javě nebo Pythonu, většina útoků a principů je stejných.

Zabezpečené přenosy dat pomocí protokolu HTTPS detailně rozebíráme na školení pro správce a vývojáře.

Název školení

Bezpečnost PHP aplikací


Náplň

Popis, rizika a obrana proti útokům, které jsou vedeny proti webovým aplikacím:

1. den

  • Vyhledávání aplikací a zařízení

    Pomocí specializovaných vyhledávačů jako např. Shodan nebo Certificate Transparency.

  • Full Path Disclosure

    Proč je zobrazení chybových hlášek PHP pro útočníka lákavé a co se z nich dozví?

  • Cross-Site Scripting (XSS)

    Útoky na návštěvníky webu a jejich prohlížeče, typy XSS (stored, reflected, DOM-based), obrana na serveru i v browseru, XSS Auditor. Ukázka možností XSS pomocí BeEF.

  • Content Security Policy (CSP)

    Další úroveň ochrany nejen proti XSS pomocí vyjmenování povolených zdrojů.

  • SQL Injection

    O „dolování“ a změně dat v tabulkách, ke kterým standardně není přístup. Vysvětlení Blind SQL Injection, Time-based blind SQL Injection, i rozdílů mezi technologií prepared statements a vázáním proměnných. Praktický úkol na testovacím webu a ukázka programu sqlmap.

  • Vkládání souborů a vzdálené spuštění

    Jak na nahrávání souborů od uživatelů, kam je ukládat a pod jakým jménem. Spouštění externích programů (např. pro změnu velikosti obrázků) „v cloudu“, nebezpečí skrývající se v deserializaci uživatelských vstupů.

  • Cross-Site Request Forgery (CSRF), Clickjacking

    Útočník může uživatele donutit provést nějakou akci bez jeho vědomí nebo ho naláká na kliknutí na prvek stránky, na který by normálně nekliknul. K čemu se to dá použít a jak proti tomu aplikace obránit?

  • Session Hijacking, Session Fixation

    Kdo má identifikátor sezení (session id), ten je pán, takže je vhodné takový identifikátor dobře chránit. O HTTP-only cookies, přegenerování session id a rozumně vyřešeném přihlášení z více míst současně.

2. den

  • XML External Entity Injection (XXE)

    Pomocí definice vlastních entit v XML souborech lze během jejich zpracování ze serverů získávat konfigurační soubory nebo zdrojové kódy. Ukážeme si jak a prozradíme jak tomu nejlépe zabránit.

  • Generování „bezpečných“ náhodných dat

    Kde se bere náhoda a proč by se funkce rand() neměla používat pro generování tokenů, šifrovacích klíčů apod.

  • Ukládání a hashování hesel

    Jak se lámou hesla, k čemu slouží „salt“, proč používat algoritmus bcrypt nebo Argon2i a ne MD5 nebo SHA-1 (ani SHA-2, SHA-3). A jak změnit hashování bez vynucené změny hesel všech uživatelů?

  • Šifrování dat

    Co je to Authenticated Encryption (AE) a co na šifrování použít?

  • HTTPS

    Konfigurace serveru, testovací nástroje a vynucení pomocí HTTP Strict Transport Security (HSTS).

  • Neautorizovaný přístup k cizím datům

    Jak získat faktury ostatních zákazníků a jak útoku Insecure Direct Object Reference zabránit?

  • Zneužití formulářů pro odesílání nevyžádané pošty

    Vložením dalších hlaviček na správná místa lze zprávu poslat jinam než bylo původně zamýšleno a to dokonce i s jiným obsahem.

  • Konfigurace a ochrana zdrojových kódů

    Jak nejlépe nastavit PHP a webový server.

  • Bezpečnostní HTTP hlavičky

    Některé hlavičky mohou pomoci ochránit aplikaci nebo alespoň zmírnit dopad úspěšného útoku. Ukážeme si které i jak jednoduše aplikaci otestovat pomocí Security Headers a Mozilla Observatory.


Lektor

Michal Špaček (o lektorovi, kontakt na lektora)


Předpoklady

Stačí základní znalost HTML, JavaScriptu, PHP a SQL. Školení je vhodné i pro vývojáře, kteří pracují v jiných jazycích (např. v Javě nebo Pythonu), většina principů a útoků je shodných.


Určeno pro

Školení je určeno jak pro stávající tvůrce webových aplikací, tak pro uchazeče o pozici vývojáře PHP, kterým dá konkurenční výhodu.


Délka

Školení je dvoudenní, každý den 8 hodin i s přestávkami, ale dle situace se může až o hodinu protáhnout.
Pokud budete chtít probrat jen některá témata, můžeme školení uspořádat pouze jednodenní.


Kapacita

Neomezena, ale nad 12 účastníků zbývá méně času na dotazy.


Cena

40000 Kč bez DPH, 48400 Kč s DPH
Základní cena jednodenního školení je 20000 Kč bez DPH, 24200 Kč s DPH.


Materiály

Účastníci dostanou tištěnou prezentaci a certifikát. Dostatek prostoru bude věnován na dotazy. Po skončení školení zasílám komentovanou prezentaci e-mailem i s příklady použitými na školení.


Ohlasy na školení

Martin Ambrož, AVAST Software a.s.

Školení o bezpečnosti PHP aplikací Michala Špačka předčilo má očekávání. Vývoji webových aplikací se profesionálně věnuji 13 let, přesto musím zkonstatovat, že pořád je co nového se učit. Je vidět, že pan Špaček má o bezpečnosti velký přehled a že je to i jeho koníček. Kromě přehledně zpracovaných podkladů ke školení jsem uvítal i mnoho praktických ukázek a dostatečný prostor pro dotazy přímo při probírání každého tématu.

Pavel Kutáč, Moravio s.r.o.

Školení předčilo mé očekávání a to i přesto, že se o bezpečnost se také trochu zajímám, Michala sleduji na webu i sociálních sítích a některé probírané techniky jsem již znal. Nic ale nenahradí osobní setkání a diskuzi k tématu, kdy se člověk dozví nejvíce. Rozhodně mohu doporučit, protože je stále co objevovat! (více…)

Adam Tyroň, Růžový slon s.r.o.

Školení se mi líbilo a splnilo má očekávání. Skvěle připravené, teorie proložena praktickými ukázkami. Školení mi sjednotilo a rozšířilo dosavadní znalosti o problematice. Doporučuji aby školením prošli všichni weboví vývojáři.

Další ohlasy najdete na stránce s ohlasy na veřejné školení.


Objednávka

Pro objednání školení mi napište e-mail a navrhněte termín, který se vám hodí.