Bądźmy w kontakcie
 Czas trwania 21 godzin

Plan Szkolenia

1. Bezpieczeństwo IT i bezpieczne kodowanie

  • Podstawowe zasady bezpieczeństwa: poufność, integralność i dostępność (CIA) w kontekście aplikacji Java.
  • Cykl życia bezpiecznego tworzenia oprogramowania (SSDLC): integrowanie bezpieczeństwa od wymagań po wdrożenie.
  • Paradygmaty bezpiecznego kodowania: obrona w głąb, zasada najmniejszych uprawnień i bezpieczne ustawienia domyślne.
  • Standardowe klasyfikacje podatności: zrozumienie CWE (Common Weakness Enumeration) i OWASP.

2. Bezpieczeństwo aplikacji internetowych

  • Szczegółowa analiza OWASP Top Ten: dokładne omówienie wstrzykiwania, naruszonego uwierzytelniania i narażenia wrażliwych danych.
  • Cross-Site Scripting (XSS): scenariusze XSS odbitego, trwałego i opartego na DOM w Java/JSP.
  • Cross-Site Request Forgery (CSRF): mechanizmy ataku i implementacja tokenów anty-CSRF.
  • Zarządzanie sesjami: bezpieczeństwo plików cookie, fiksacja sesji i zarządzanie limitami czasu.
  • Bezpieczeństwo API: zabezpieczanie punktów końcowych REST i SOAP przed nadużyciami.

3. Bezpieczeństwo usług sieciowych

  • Usługi sieciowe a tradycyjne aplikacje internetowe: różnice w powierzchniach ataku.
  • Bezpieczeństwo warstwy transportowej: konfiguracja SSL/TLS dla klientów i serwerów Java.
  • Bezpieczeństwo komunikatów: integralność i poufność na poziomie ładunku.
  • Standardy uwierzytelniania: implementacja OAuth 2.0, OpenID Connect i JWT (JSON Web Tokens).

4. Bezpieczeństwo XML

  • Podatności parsowania XML: zapobieganie atakom XML External Entity (XXE).
  • Walidacja schematu XML: najlepsze praktyki ścisłego egzekwowania schematu.
  • Podpisy cyfrowe XML: implementowanie podpisów w celu zapewnienia niezaprzeczalności.
  • Szyfrowanie XML: standardowe podejścia do szyfrowania zawartości XML.

5. Podstawy bezpieczeństwa Javy

  • Architektura bezpieczeństwa Javy: pakiet java.security i architektura dostawców.
  • Dostawcy bezpieczeństwa: instalowanie i konfigurowanie dostawców, takich jak Bouncy Castle.
  • Kontrola dostępu: pliki polityki, uprawnienia i menedżer bezpieczeństwa (podejście starsze i nowoczesne).
  • Zarządzanie KeyStore: tworzenie i zarządzanie magazynami kluczy i magazynami zaufania dla certyfikatów.

6. Kryptografia praktyczna

  • Algorytmy kryptograficzne: przegląd algorytmów symetrycznych (AES), asymetrycznych (RSA, ECC) i skrótów (SHA-256/512).
  • Generowanie liczb losowych: zagrożenia związane z java.util.Random w porównaniu z java.security.SecureRandom.
  • Zarządzanie kluczami: strategie generowania, przechowywania i rotacji kluczy.
  • Architektura kryptografii Java (JCA): korzystanie z klas Cipher, MessageDigest i Mac.
  • Java Cryptography Extension (JCE): zrozumienie plików polityki i jurysdykcji nieograniczonej siły.

7. Usługi bezpieczeństwa Javy

  • SSL/TLS w Javie: korzystanie z SSLSocketFactory i HttpsURLConnection.
  • Menedżerowie zaufania: dostosowywanie weryfikacji zaufania w środowiskach prywatnej infrastruktury PKI.
  • Uwierzytelniacze: uwierzytelnianie programistyczne przy użyciu Authenticator.getDefault().
  • Parsowanie certyfikatów: programistyczne odczytywanie i analizowanie certyfikatów X.509.

8. Bezpieczeństwo Java EE

  • Bezpieczeństwo deklaratywne: kontrola dostępu oparta na rolach (RBAC) przy użyciu web.xml i adnotacji.
  • Bezpieczeństwo programistyczne: korzystanie z HttpServletRequest.isUserInRole() i getRemoteUser().
  • JAAS (Java Authentication and Authorization Service): konfigurowanie login.conf i implementowanie modułów LoginModule.
  • Bezpieczeństwo serwletów: ograniczenia bezpieczeństwa zarządzane przez kontener i metody uwierzytelniania (FORM, BASIC, DIGEST).

9. Typowe błędy kodowania i podatności

  • Niebezpieczna deserializacja: ryzyko związane z ObjectInputStream i omijanie kontroli bezpieczeństwa.
  • Wstrzykiwanie poleceń: łagodzenie podatności na wykonanie poleceń na poziomie systemu operacyjnego.
  • Przejście przez ścieżkę: sanityzacja danych wejściowych systemu plików w celu zapobiegania przechodzeniu katalogów.
  • Nadużycie refleksji: ryzyko związane z java.lang.reflect i omijanie kontroli dostępu.
  • Zaszyte poświadczenia: identyfikowanie i usuwanie sekretów z kodu źródłowego.
  • Błędy implementacji kryptografii: używanie trybu ECB, słabych kluczy lub statycznych wektorów IV.

10. Źródła wiedzy

  • Narzędzia analizy statycznej: korzystanie z SonarQube, Checkmarx i Fortify do automatycznego skanowania.
  • Narzędzia analizy dynamicznej: przegląd Burp Suite i OWASP ZAP.
  • Bazy danych CVE: jak śledzić i reagować na nowe podatności frameworka Java.
  • Zalecane materiały: lista książek, dokumentacji i list kontrolnych bezpiecznego kodowania.

Wymagania

Brak.

Liczba uczestników


Cena za uczestnika (netto)

Opinie uczestników (5)

Propozycje terminów

Powiązane Kategorie