Web application security in Java

Web application security in Java

Översikt

Din webbapplikation skriven i Java fungerar som tänkt, så du är klar, eller hur?
Men har du tänkt på att mata in felaktiga värden?
16Gbs data?
En null?
En apostrof?
Negativa tal, eller specifikt -232?
För det är vad skurkarna kommer att göra – och listan är långt ifrån komplett.

Att hantera säkerhet kräver en hälsosam nivå av paranoia, och det är vad den här kursen ger: ett starkt känslomässigt engagemang genom massor av praktiska labb och berättelser från verkliga livet, allt för att avsevärt förbättra kodhygienen.
Misstag, konsekvenser och bästa praxis är vårt blod, svett och tårar.

Läroplanen går igenom de vanliga säkerhetsfrågorna för webbapplikationer enligt OWASP Top Ten men går långt utöver det både i täckning och detaljer. Allt detta sätts i samband med Java och utökas med grundläggande programmeringsfrågor och diskuterar säkerhetsfällor i Java-språket och ramverket.

Så att du är beredd på den mörka sidans krafter, så att inget oväntat händer.

Ingenting.

Levereras på plats under tre dagar, kl. 09.00-17.00
Levereras online under fem dagar, måndag – fredag kl. 09.00-13.00

  • Att bekanta sig med grundläggande begrepp inom cybersäkerhet
  • Förståelse för säkerhetsfrågor för webbapplikationer
  • Detaljerad analys av OWASP Top Ten-elementen
  • Säkerhet för webbapplikationer i Java-sammanhang
  • Att gå bortom de lågt hängande frukterna
  • Hantera sårbarheter i komponenter från tredje part
  • Identifiera sårbarheter och deras konsekvenser
  • Lär dig bästa praxis för säkerhet i Java
  • Metoder och principer för validering av indata

Javautvecklare som arbetar med webbapplikationer.

Allmän Java- och webbutveckling.

Dag 1

Grunderna i cybersäkerhet

OWASP Topp 10

A1 – Injektion

  • Injektionsprinciper
  • Injektionsattacker
  • SQL-injektion
    – Grunderna i SQL-injektion
    – Labb – SQL-injektion
    – Angreppstekniker
    – Innehållsbaserad blind SQL-injektion
    – Tidsbaserad blind SQL-injektion
  • Bästa praxis för SQL-injektion
    – Inmatningsvalidering
    – Parametriserade frågor
    – Laboration – Användning av förberedda satser
    – Fallstudie – Hackning av Fortnite-konton
  • Kodinjektion
    – OS-kommandoinjektion
    – Bästa praxis för OS-kommandoinjektion
    – Använda Runtime.exec()
    – Använda ProcessBuilder
    – Fallstudie – Shellshock
    – Labb – Shellshock
    – Skriptinjektion

A2 – Bristande autentisering

  • Autentisering
    – Grunderna i autentisering
    – Flerfaktorsautentisering
    – Svagheter i autentisering
    – Fallstudie – PayPal 2FA-bypass
  • Lösenordshantering
    – Inkommande lösenordshantering
    – Lagring av kontolösenord
    – Lösenord i transit
    – Labb – Räcker det med att bara hasha lösenord?
    Ordboksattacker och brute forcing
    – Saltning
    – Adaptiva hashfunktioner för lagring av lösenord
    – Lösenordspolicy
    Krav på NIST-autentisering för memorerade hemligheter
    – Fallstudie – Ashley Madison-dataintrånget
    – Ordboksattacken
    – Den ultimata cracken
    – Exploatering och lärdomar
  • Migrering av lösenordsdatabas
    – (Fel)hantering av null-lösenord

Dag 2

A2 – Bristande autentisering (fortsättning)

  • Sessionshantering
    – Grundläggande om sessionshantering
    – Varför skyddar vi sessions-ID – Sessionskapning
    – Sessionsfixering
    – Sessionsinvalidering
    – Bästa praxis för sessions-ID
    Cross-site Request Forgery (CSRF)
    – Lab – Cross-site Request Forgery
    – Bästa praxis för CSRF
    – CSRF-försvar på djupet
    – Lab – CSRF-skydd med tokens
    – Cookie-säkerhet
    – Cookie-attribut

A4 – XML externa entiteter (XXE)

  • DTD och entiteterna
  • Entitetsutvidgning
  • External Entity Attack (XXE)
    – Filinkludering med externa entiteter
    – Server-Side Request Forgery med externa entiteter
    – Lab – External entity attack
    – Fallstudie – XXE-sårbarhet i SAP Store
    – Förhindra XXE
    – Lab – Förhindra DTD-expansion

A5 – Bristande åtkomstkontroll

  • Grunderna i åtkomstkontroll
  • Underlåtenhet att begränsa URL-åtkomst
  • Förvirrad ställföreträdare
    – Osäker direkt objektreferens (IDOR)
    – Laboration – Osäker direkt objektreferens
    – Auktorisering genom användarkontrollerade nycklar
    – Fallstudie – Auktorisering på Facebook
    – Laboration – Horisontell auktorisering
  • Filuppladdning
    – Obegränsad filuppladdning
    – God praxis
    – Labb – Obegränsad filuppladdning

A7 – Skript på flera webbplatser (XSS)

  • Grunderna för skript på flera webbplatser
  • Typer av scripting på andra webbplatser
    – Persistent scripting på andra webbplatser
    – Reflekterat scripting på andra webbplatser
    – Scripting på andra webbplatser på klientsidan (DOM-baserat)
  • Labb – Lagrad XSS
  • Labb – Reflekterad XSS
  • Fallstudie – XSS i Fortnite-konton
  • Bästa praxis för XSS-skydd
    – Skyddsprinciper – escaping
    – API:er för XSS-skydd i Java
    – XSS-skydd i JSP
    – Lab – XSS-fix / lagrad
    – Lab – XSS-fix / reflekterad
    – Ytterligare skyddslager
    – Principer för skydd på klientsidan

A8 – Osäker deserialisering

  • Utmaningar med serialisering och deserialisering
  • Integritet – deserialisering av icke betrodda flöden
  • Använda readObject
  • Integritet – bästa praxis för deserialisering
  • Deserialisering med framförhållning
  • Property Oriented Programming (POP)
    – Skapa nyttolast
    – Sammanfattning – Bästa praxis för POP
    – Lab – Skapa en POP-nyttolast
    – Lab – Använda POP-nyttolasten

A9 – Använda komponenter med kända sårbarheter

  • Användning av sårbara komponenter
  • Import av otillförlitlig funktionalitet
  • Importera JavaScript
  • Lab – Importera JavaScript
  • Fallstudie – Dataintrånget hos British Airways
  • Sårbarhetshantering
    – Patchhantering
    – Sårbarhetsdatabaser
    – Laboration – Hitta sårbarheter i tredjepartskomponenter

Dag 3

Webbapplikationssäkerhet bortom topp tio

  • Säkerhet på klientsidan
  • Policy för samma ursprung
  • Frame sandboxing
    – XFS-attack (Cross-Frame Scripting)
    – Laboration – Clickjacking
    – Clickjacking utöver att kapa ett klick
    – Bästa praxis för att skydda mot clickjacking
    – Laboration – Använda CSP för att förhindra clickjacking

API-säkerhet

  • Inmatningsvalidering
    – Principer för inmatningsvalidering
    – Svarta och vita listor
    – Datavalideringstekniker
    – Labb – Inmatningsvalidering
    – Vad ska valideras – attackytan
    – Var ska valideras – djupförsvar
    – När ska man validera – validering vs transformationer
    – Output sanitization
    – Kodningsutmaningar
    – Unicode-utmaningar
    – Lab – Kodningsutmaningar
    – Validering med regex
    – Regular expression denial of service (ReDoS)
    – Lab – ReDoS i Java
    – Hantering av ReDoS
  • Problem med heltalshantering
    – Representation av signerade tal
    – Visualisering av heltal
    – Integer overflow
    – Lab – Integer overflow
    – Signed / unsigned förvirring i Java
    – Fallstudie – Stockholmsbörsen
    – Integer truncation
    – Best practice
    – Upcasting
    – Precondition testing
    – Postcondition testing
    – Using big integer libraries
    – Integer handling in Java
    – Lab – Integer handling
  • Filer och strömmar
    – Sökvägstraversering
    – Lab – Sökvägstraversering
    – Exempel på sökvägstraversering
    – Ytterligare utmaningar i Windows
    – Virtuella resurser
    – Bästa praxis för sökvägstraversering
    – Lab – Kanonisering av sökväg
  • Osäker reflektion
    – Reflektion utan validering
    – Lab – Osäker reflektion
  • Kodkvalitet
    – Datahantering
    – Initialisering och rensning
    – Klassinitialiseringscykler
    – Lab – Initialiseringscykler
    – Metoden finalize() – bästa praxis
    – Fallgropar i objektorienterad programmering
    – Arv och överstyrning
    – Mutabilitet
    – Lab – Mutabelt objekt

Packa upp

  • Principer för säker kodning
    – Principer för robust programmering av Matt Bishop
    – Principer för säker design av Saltzer och Schröder

Och vad händer nu?

  • Programvarusäkerhet – källor och vidare läsning
  • Java-resurser

Kursöversikt

32 900 kr

3 dagar

Distans

Grund

Engelska

Startgaranti gäller om kursen har datum, om inget annat framgår.

Hittar du inget (passande) datum? Skicka in en intresseanmälan så gör vi vad vi kan för att planera ett tillfälle som passar. 

Fö­re­tags­an­pas­sad kurs

Kursen kan anpassas från flera perspektiv:
  • Innehåll och fokusområde
  • Omfattning
  • Upplägg

I samspel med kursledaren ser vi till att kursen uppfyller era önskemåll

Skicka intresseanmälan för utbildningen