Biztonságos programozás PHP környezetben

CL-PHP

Biztonságos programozás PHP (Linux-Apache-PHP-MySQL) környezetben

Képzési forma:
Képzés hossza:
3 nap (24 óra)
Képzés nyelve:
Magyar/Angol
2023.
április
17.
Normál
2023.
november
27.
Normál
Képzési forma:
Normál
Képzés hossza:
3 nap (24 óra)
Képzés nyelve:
Magyar/Angol
2023.
április
17.
2023.
november
27.

Ismertető

A képzés célja bemutatni a PHP-ban írt webalkalmazásoknak, azok környezetének és a mögöttük működő adatbázisoknak a gyenge pontjait. A gyakorlatok elsősorban a LAMP (azaz Linux-Apache-PHP-MySQL) alapú fejlesztői környezetre épülnek, de maga a képzés minden PHP-alapú környezetre releváns tudást nyújt. A biztonsági funkciók megvalósítására alkalmazható eszközök megismerésével a fejlesztők hatékonyabban lesznek képesek biztonságos alkalmazásokat készíteni.

A tanfolyam olyan alapvető készségeket biztosít PHP fejlesztők számára, amelyek nélkül ma már nem lehet webalkalmazásokat fejleszteni. Az általános webes sérülékenységeket az OWASP top tízes listája alapján PHP-ban megvalósított példaprogramokon keresztül ismertetjük. A PHP-specifikus sérülékenységeket a standard Fortify kategóriák szerint végighaladva taglaljuk.

Különleges figyelmet kapnak a kliensoldali kérdések is, mint például a JavaScript, az Ajax és a HTML5 biztonsága. A PHP standard biztonsági szolgáltatásait és biztonsági kiterjesztéseit is bemutatjuk, mint pl. az mcrypt, az OpenSSL, a Ctype vagy a HTML Purifier. Külön fejezetet kap a futtató környezet paramétereinek a beállítása biztonsági szemszögből. Végül foglalkozunk a biztonsági teszteléssel is, bemutatva a különböző bevethető módszereket és eszközöket.

Az egyes sérülékenységek, támadás módok, védekezési technikák bemutatása, valamint a különböző programkönyvtárak és tesztelő eszközök használata számos gyakorlati példa formájában kerül bemutatásra, amelyeket a részvevők aktív közreműködésével hajtunk végre.

A képzés programozóknak, fejlesztőknek, szoftvertervezőknek, biztonsági szakembereknek ajánljuk, akik szeretnék megismerni a minél biztonságosabb programok, alkalmazások készítésének professzionális technikáit PHP környezetben. A képzés egyedi formában is elérhető más fejlesztői környezettel, technológiával összevonva.

  • Az IT biztonságtól a biztonságos programozásig: általános vs. IT biztonság, biztonsági fogalmak, a kockázat fogalma, biztonsági követelmények, biztonságos programozás, a sérülékenységektől a szervezett bűnözésig, a biztonsági rések jellege, kategóriái.
  • Webalkalmazások sérülékenységei: SQL injection a gyakorlatban, védekezés; általános command injection, CSS injection, cookie injection; persistent és reflected Cross-Site Scripting (XSS), védekezés; Cross Site Request Forgery (CSRF), védekezés; rosszindulatú állomány-feltöltés, veszélyes közvetlen hivatkozások, session kezelés problémai, URL hozzáférés szabályozás.
  • Bemenet-ellenőrzési hibák: bemenet ellenőrzési funkciók PHP-ban, távoli kód végrehajtás – a Santy worm példája, path traversal, adatellenőrzés MySQL-ben, változó hozzáférés hibák PHP-ban, változó szennyezés, file feltöltési problémák, captcha használata, környezeti beállítások manipulációja.
  • Kliensoldali biztonság: JavaScript biztonság, Same Origin Policy, Global Object, authentikáció és jelszó management, JavaScript védelme (obfuscation), clickjacking és védelmi módok; Ajax biztonság (CSRF Ajaxban, a MySpace worm, védelmi javaslatok); HTML5 biztonság (új XSS lehetőségek HTML5-ben, HTML5 clickjacking, form tampering, cross-origin kérések, cross-document üzenetküldés, port scanning)
  • A PHP biztonsági szolgáltatásai: kriptográfiai kiterjesztések (hash, mcrypt, openssl), bemenet-ellenőrzési könyvtárak (CType, ext/filter), HTML Purifier, egyéb API-k és eszközök.
  • A PHP környezet biztonsága: szerveroldali konfiguráció, LAMP verziók, szerver erőforrások, webszerver konfigurációs sérülékenységek PHP-ban, Apache beállítások. PHP konfigurációs beállítások biztonsága, php.ini beállítások: információ közzététel, erőforrás korlátozások, session kezelés, egyéb beállítások, használaton kívül helyezett beállítások; Safe Mode; veszélyes PHP függvények és osztályok. Futtatási környezet biztonsága: Apache konfiguráció, MIME típusok beállításai. Hardening: szerver virtualizáció, platformok különbözősége, Suhosin, konfiguráció management.
  • Biztonsági módszerek helytelen használata: biztonságos véletlenszám generálás PHP-ban, jelszó menedzsment tipikus problémái, authentikáció, személyes adatok védelme (privacy).
  • Hiba- és kivételkezeléssel kapcsolatos biztonsági problémák: hibás kivételjelzés és elkapás, PHP adat-összehasonlítási szabályai, információszerzés hibajelentésekből.
  • Időzítéses és állapotkezelési hibák: konkurens file hozzáférés, dupla submit probléma, session kezelési kérdései, az open_basedir megoldás sérülékenysége, konkurens hozzáférés az adatbázisokhoz, denial of service előidézése mágikus float konstanssal, hashtable collision támadás és kivédése.
  • Biztonsági tesztelés módszertana és eszközei: funkcionális vs. biztonsági tesztelés, tesztesetek tervezése. Módszerek biztonsági tesztelésre: kód ellenőrzés, penetration testing, kézi run-time ellenőrzés, automatikus tesztelés, fuzzing. Biztonsági tesztelési eszközök: web sérülékenység scanner-ek, SQL injection kereső eszközök, publikus adatbázisok, keresőmotorral támogatott támadás, proxy szerverek és sniffer-ek, statikus kód analízis (Rips használata).
  • Tanácsok és elvek: fejlesztőknek és üzemeltetőknek, Saltzer és Schröder 8 elve, Matt Bishop robusztus programozási elvei, referenciák, további források, sérülékenység adatbázisok, összefoglaló.

Programozási ismeretek és legalább két éves gyakorlat PHP nyelven. Tapasztalat Linux, Apache és MySQL használatában, alap web alkalmazásfejlesztési gyakorlat. Alapvető kriptográfiai fogalmak és módszerek alapfokú gyakorlati ismerete ajánlott. Mivel a tananyag angol nyelvű, ezért alapfokú, dokumentumolvasás szintű angol nyelvtudás szükséges. Az előadás magyar nyelven zajlik.