Bezpečnost PHP aplikací
Popis, rizika a obrana proti útokům, které jsou vedeny proti webovým aplikacím:
Pomocí specializovaných vyhledávačů jako např. Shodan nebo Certificate Transparency.
Proč je zobrazení chybových hlášek PHP pro útočníka lákavé a co se z nich dozví?
Ú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.
Další úroveň ochrany nejen proti XSS pomocí vyjmenování povolených zdrojů.
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.
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ů.
Ú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?
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ě.
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.
Kde se bere náhoda a proč by se funkce rand()
neměla používat pro generování tokenů, šifrovacích klíčů apod.
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ů?
Co je to Authenticated Encryption (AE) a co na šifrování použít?
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.
Jak získat faktury ostatních zákazníků a jak útoku Insecure Direct Object Reference zabránit?
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.
Jak nejlépe nastavit PHP a webový server.
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.
Michal Špaček (o lektorovi, kontakt na lektora)
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.
Š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.
Š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í.
Neomezena, ale nad 12 účastníků zbývá méně času na dotazy.
50 000 Kč bez DPH, 60 500 Kč s DPH
Základní cena jednodenního školení je 25 000 Kč bez DPH, 30 250 Kč s DPH.
Úč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.
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…)
Další ohlasy najdete na stránce s ohlasy na veřejné školení.
Pro objednání školení mi napište e-mail a navrhněte termín, který se vám hodí.