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ů vás i vaše uživatele. O zabezpečení webu často píšu články a přednáším. Rád se s vámi podělím o svoje zkušenosti a naučím vás, jak webové aplikace zabezpečit a jak je na bezpečnost testovat.

Název školení

Bezpečnost PHP aplikací


Náplň

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

  • 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ě.

  • 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). Šifrování přenosu dat je ale samo o sobě natolik rozsáhlé téma, že jsem ho vyčlenil do samostatného školení HTTPS (nejbližší termín: termín zatím nevypsán), ve kterém si do detailu vysvětlujeme certifikáty a certifikační autority, ukazujeme si výměnu šifrovacích klíčů, Certificate Transparency, CAA a další technologie a nastavení používané k zabezpečení přenostu dat.

  • 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.

Chcete se dozvědět více o zabezpečených přenosech pomocí HTTPS? Přihlaste se na školení pro správce a vývojáře.


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.


Termín, místo, cena

Žádný termín není zatím stanoven. Dejte mi níže vědět, pokud byste o školení měli zájem. Školení v tomto rozsahu je možné uspořádat i ve vaší firmě.

Školení v Praze (příp. online) probíhají pravidelně jednou za čtvrt roku, vždy v polovině března, června, září a prosince, v jiných městech nepravidelně.


Kapacita

Nejvýše 15 účastníků


Materiály

Účastníci prezenčních školení dostanou certifikát a tištěnou prezentaci, kterou po skončení posílám i e-mailem spolu s příklady použitými na školení. U online kurzů posílám prezentaci předem k případnému vytištění, po skončení navíc i certifikát v PDF. Dostatek prostoru bude věnován na dotazy.


Ohlasy na školení

Jan Pospíšil, Senior PHP developer, Český rozhlas

Michalovo školení jsem původně domlouval primárně pro svoje kolegy, protože já přece „všechno z osnovy školení znám“… Z omylu mě Michal hned první hodinu prvního dne a pak postupně celé dva dny. Teprve díky tomuto školení jsem některé koncepty útoků/obran pochopil v plné šíři, hloubce a hlavně správném kontextu.

Zejména kvituji spoustu praktických příkladů, ukázek a hlavně tipů. Některé z nich jsem na naše weby aplikoval už v průběhu školení. Školení určitě doporučuji každé firmě (a jednotlivci), která to s vývojem a provozem webů myslí vážně.

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…)

Všechny ohlasy


Nezávazná přihláška

Účastník

Na zadanou e-mailovou adresu zašlu pozvánku, jakmile termín tohoto školení vypíšu. Na nic jiného nebude použita.

Školení v tomto rozsahu je možné uspořádat i ve vaší firmě. Nabízím i konzultaci pro vaši firmu, napište mi!