Grazie per aver inviato la tua richiesta! Uno dei nostri team membri ti contatterà a breve.
Grazie per aver inviato il tuo prenotazione! Uno dei nostri team membri ti contatterà a breve.
Struttura del corso
1. Sicurezza informatica e programmazione sicura
- Principi fondamentali della sicurezza: riservatezza, integrità e disponibilità (CIA) nell’ambito delle applicazioni Java.
- Ciclo di vita dello sviluppo software sicuro (SSDLC): come integrare la sicurezza in ogni fase, dalle specifiche all’implementazione finale.
- Paradigmi della programmazione sicura: approccio difensivo a più livelli, principio del minimo privilegio e impostazioni predefinite sicure.
- Classificazione delle vulnerabilità: comprendere il CWE (Common Weakness Enumeration) e l’elenco OWASP.
2. Sicurezza delle applicazioni web
- Analisi approfondita dell’OWASP Top Ten: in particolare i problemi legati agli attacchi di tipo Injection, all’autenticazione malfunzionante e alla divulgazione non autorizzata di dati sensibili.
- Cross-Site Scripting (XSS): scenari di attacco basati su XSS riflesso, memorizzato o legato al DOM in applicazioni Java/JSP.
- Cross-Site Request Forgery (CSRF): meccanismi d’attacco e implementazione dei token anti-CSRF.
- Gestione delle sessioni: sicurezza dei cookie, prevenzione della fissazione delle sessioni e impostazione di timeout adeguati.
- Sicurezza delle API: tecniche per proteggere gli endpoint REST e SOAP da abusi e accessi non autorizzati.
3. Sicurezza dei servizi web
- Servizi web contro applicazioni web tradizionali: differenze nelle superfici di attacco.
- Sicurezza a livello del trasporto: configurazione corretta di SSL/TLS per client e server Java.
- Protezione dei messaggi: garantire integrità e riservatezza ai dati trasmessi.
- Standard di autenticazione: implementazione di OAuth 2.0, OpenID Connect e JWT (JSON Web Tokens).
4. Sicurezza XML
- Vulnerabilità nella elaborazione dei documenti XML: come prevenire gli attacchi tipo XXE.
- Validazione degli schemi XML: procedure corrette per l’applicazione rigorosa delle definizioni di schema.
- Firme digitali XML: metodi per garantire la non ripudiabilità dei dati mediante firme elettroniche.
- Crittografia XML: tecniche standard per l’protezione dei contenuti XML.
5. Fondamenti della sicurezza in Java
- Architettura di sicurezza di Java: il pacchetto
java.securitye la gestione dei provider. - Provider di sicurezza: come installare e configurare componenti aggiuntivi quali Bouncy Castle.
- Controllo degli accessi: utilizzo di policy files, permessi e del Security Manager (considerando sia le versioni precedenti che quelle moderne).
- Gestione dei KeyStore: creazione e mantenimento di archivi di chiavi e certificati.
6. Crittografia pratica
- Algoritmi crittografici: panoramica sugli algoritmi simmetrici (AES), asimmetrici (RSA, ECC) e di hashing (SHA-256/512).
- Generazione dei numeri casuali: rischi legati all’utilizzo di
java.util.Randomrispetto ajava.security.SecureRandom. - Gestione delle chiavi: tecniche per la generazione, l’archiviazione e il rotazionamento sicuro delle chiavi.
- Architettura crittografica di Java (JCA): uso dei pacchetti
Cipher,MessageDigesteMac. - Espansione crittografica di Java (JCE): conoscenza dei file di politica e delle limitazioni legate alla potenza computazionale consentita.
7. Servizi di sicurezza in Java
- Sicurezza SSL/TLS: utilizzo di
SSLSocketFactoryeHttpsURLConnection. - Gestione della fiducia: personalizzazione dei meccanismi di verifica per ambienti PKI privati.
- Autenticazione programmatica: utilizzo di
Authenticator.getDefault()per effettuare operazioni di identificazione in modo automatizzato. - Analisi dei certificati: come leggere e interpretare i certificati X.509 tramite programmazione Java.
8. Sicurezza in Java EE
- Sicurezza dichiarativa: controllo degli accessi basato sui ruoli tramite il file
web.xmle le annotazioni. - Sicurezza programmatica: utilizzo di
HttpServletRequest.isUserInRole()egetRemoteUser()per determinare i privilegi dell’utente. - JAAS (Java Authentication and Authorization Service): configurazione del file
login.confe implementazione di moduli specifici tramite la classeLoginModule. - Sicurezza dei servlet: definizione di vincoli e modalità di autenticazione gestite dal container (FORM, BASIC, DIGEST).
9. Errori comuni nella scrittura del codice e vulnerabilità associate
- Deserializzazione non sicura: rischi derivanti dall’utilizzo di
ObjectInputStreamsenza adeguate verifiche. - Iniezione di comandi: misure necessarie per prevenire attacchi basati sull’esecuzione non autorizzata di istruzioni OS.
- Attraversamento dei percorsi: tecniche per la sanitizzazione degli input riguardanti il filesystem.
- Abusi legati alla riflessione: rischi derivanti dall’uso improprio di
java.lang.reflecte dai tentativi di eludere i controlli d’accesso. - Credenziali hardcoded: come individuare e rimuovere informazioni sensibili dal codice sorgente.
- Errori nella implementazione crittografica: utilizzo di modalità errate, chiavi deboli o vettori IV non variabili.
10. Fonti informative e strumenti utili
- Strumenti di analisi statica: utilizzo di SonarQube, Checkmarx e Fortify per effettuare scansioni automatizzate.
- Strumenti di analisi dinamica: panoramica su Burp Suite e OWASP ZAP.
- Banche dati CVE: come monitorare le vulnerabilità emergenti nel framework Java e reagire prontamente.
- Materiali didattici consigliati: elenco di libri, documentazione ufficiale e checklists utili per la programmazione sicura.
Requisiti
Nessun prerequisito richiesto.
21 ore
Recensioni (4)
le conoscenze del formatore erano molto elevate - sapeva di cosa stava parlando e conosceva le risposte alle nostre domande
Adam - Fireup.PRO
Corso - Advanced Java Security
Traduzione automatica
Esercizi pratici
Olek - Fireup.PRO
Corso - Advanced Java Security
Traduzione automatica
esercizi di programmazione
Mirek - Fireup.PRO
Corso - Advanced Java Security
Traduzione automatica
Offre una vasta panoramica e fornisce molte informazioni sulla sicurezza
Nolbabalo Tshotsho - Vodacom SA
Corso - Advanced Java Security
Traduzione automatica