Biztonságos programozás Java környezetben

CL-JSC Új

Biztonságos programozás Java nyelven és környezetben

Képzési forma:
Képzés hossza:
3 nap (24 óra)
Képzés nyelve:
Magyar/Angol
2023.
március
20.
Normál
2023.
június
05.
Normál
2023.
október
02.
Normál
Képzési forma:
Normál
Képzés hossza:
3 nap (24 óra)
Képzés nyelve:
Magyar/Angol
2023.
március
20.
2023.
június
05.
2023.
október
02.

Ismertető

A Java megalkotásakor a biztonsági megfontolásokat eleve tudatosan szem előtt tartották. A nyelvi konstrukciók, de maga a futtató környezet is számos előnnyel rendelkezik a natív kódhoz viszonyítva. Ráadásul ha Java-ban szeretnénk biztonságos rendszert fejleszteni, a környezet részeként előre kidolgozott standard biztonsági és kriptográfiai funkciók állnak rendelkezésünkre.

Jelentkezzen a Java biztonságos programozás tanfolyamunkra, és ismerje meg hogyan kell a Java technológiáit megfelelően használni, és melyek azok a biztonsági szempontból releváns hibák, amelyek a Java használata során felléphetnek, hogyan kell védekezni ellenük, illetve hogyan lehet őket elkerülni.

A Java egy programnyelv és egyben egy fejlesztői és futtatási környezet is. A szoftvertervezőknek és programozóknak tehát nem csak azzal kell tisztában lenniük, hogy hogyan kell az egyes biztonsági szolgáltatásokat használni, hanem azt is tudniuk kell, hogy melyek a Java környezetre jellemző biztonsági problémák.

Ennek megfelelően a tanfolyam egyrészt gyakorlatokkal alátámasztva lépésenként bemutatja a Java biztonsági felépítményét, megmutatja az egyes szolgáltatások helyes használatát és kitér a megoldások kriptográfiai hátterére is. Másrészt bemutatjuk és elmagyarázzuk a Java nyelv és környezet leggyakoribb és legveszélyesebb sérülékenységeit. A programozók által elkövetett tipikus hibákon túl ismertetjük a nyelv-specifikus problémákat, valamint azokat a biztonsági réseket, amelyek a futtató környezet és az egyes Java szolgáltatások hibás implementációjából fakadnak. Az egyes hibákat a támadási módok bemutatásával demonstráljuk, amit minden esetben a helyes gyakorlati és a védelmi módok ismertetése követ.

A képzés programozóknak, fejlesztőknek, szoftvertervezőknek, tesztelőknek, biztonsági szakembereknek ajánljuk, akik szeretnék megismerni a minél biztonságosabb programok, alkalmazások készítésének technikáit Java környezetben.

  • 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.
  • A Java biztonság alapjai: a Java programozási nyelv és biztonsági környezet, alacsony szintű biztonsági funkciók (adattag hozzáférés, típus-biztonság, automatikus memóriakezelés, Bytecode Verifier, Class Loader), Java kód védelme (titkosítás, obfuszkáció). Magas szintű biztonsági funkciók: protection domain-ek, Security Manager és az Access Controller, erőforrás hozzáférés szabályozása Permission segítségével, doPrivileged használata, policy definiálása Application és Applet esetén, erőforrás hozzáférés aláírt kód alapján.
  • Java biztonsági szolgáltatások: a Java Authentication and Authorization Service (JAAS) használata, Principal és Credential használata, Subject, JAAS architektúra, Java Generic Security Services (JGSS), Simple Authentication and Security Layer (SASL). Kriptográfiai szolgáltatások: Java Cryptography Architecture (JCA) és Java Cryptographic Extensions (JCE), a Bouncy Castle (BC) szolgáltatásai. Biztonságos kommunikáció: SSL/TLS működése, Java Secure Socket Extension (JSSE) használata. Publikus kulcsú infrastruktúra használata, Java Keystore (JKS), Java Certification Path (CertPath).
  • Webalkalmazások sérülékenységei: SQL injection a gyakorlatban, védekezés; általános command 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, egyéb tipikus biztonsági hibák webalkalmazásokban.
  • Bemenet-ellenőrzési hibák: JNI használatából fakadó veszélyek, integer túlcsordulás Java-ban – egy valós életből vett példa a java.util.zip.CRC32-ből, deserialization – súlyos hiba a java.util.Calendar-ban, reflection használatának veszélyei.
  • Biztonsági módszerek helytelen használata: biztonságos véletlenszám generálás Java-ban, a jelszó menedzsment tipikus problémái, authentikáció, személyes adatok védelme (privacy), private adattagok hozzáférése reflection-nel.
  • Hiba- és kivételkezeléssel kapcsolatos biztonsági problémák: hibás kivételjelzés és elkapás, null ellenőrzése – NullPointerException használata, erőforrások újrafelhasználása, equals() és compare() implementáció, információszerzés hibajelentésekből.
  • Időzítéses és állapotkezelési hibák: konkurens hozzáférés, thread-ek futtatása, servlet-ek kezelése, adatstruktúrák szinkronizáltsága – ArrayList vs Vector.
  • Általános kódminőségi problémák: erőforrások felszabadítása, final használata, objektum eltérítés, finalize() használata, equals() és hashCode() implementációja, immutable string, szenzitív adat szerializációja, Java kód lefagyasztása mágikus double konstanssal.
  • Mobil kód (applet-ek): private tömbök kezelése, kritikus publikus adattag, probléma a belső osztályokkal.
  • 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 Java nyelven és környezetben és alapszintű webes 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.