De cursus wordt in het Engels verzorgd onder de titel "Web Application Security in C#".

Je webapplicatie in C# werkt, dus je bent klaar, toch? Maar heb je overwogen om onjuiste waarden in te voeren? 16 GB aan data? Een null? Een apostrof? Negatieve getallen, of specifiek -2^32? Want dat is wat de slechteriken zullen doen - en deze lijst is nog lang niet compleet.

Het omgaan met beveiliging vereist een gezonde mate van paranoia, en dat is wat deze cursus biedt: een sterke emotionele betrokkenheid door veel hand-on labs en verhalen uit het echte leven, allemaal om de programmeerhygiëne aanzienlijk te verbeteren. Fouten, gevolgen en best practices zijn ons bloed, zweet en tranen.

Het lesprogramma doorloopt de veelvoorkomende beveiligingsproblemen voor webtoepassingen volgens de OWASP-top tien, maar gaat veel verder dan dat, zowel in de dekking als in de details. Dit alles wordt in de context van C# geplaatst en uitgebreid met kernproblemen bij het programmeren, waarbij de beveiligingsvalkuilen van de C#-taal en het .NET-framework worden besproken.

Zodat je voorbereid bent op de krachten van de duistere kant.

Zodat er niets onverwachts gebeurt.

Niets.

PRAKTISCHE INFORMATIE

  • Als training op locatie niet haalbaar is, kunnen we een live, interactieve online (virtuele) of hybride training aanbieden. Het standaardprogramma met een inhoud van 3 dagen kan ook in 5 halve dagen worden gegeven (van maandag tot vrijdag).
  • Doe mee met onze gratis webinar voor meer informatie.
  • Benieuwd hoe je de return-on-investment (ROI) van secure coding-trainingen kunt kwantificeren? Bekijk dan dit artikel.

Leerdoelen

  • Inzicht in beveiligingsproblemen van webtoepassingen
  • Gedetailleerde analyse van de OWASP-top tien
  • Verdergaan dan het laaghangende fruit
  • Benaderingen uitleggen voor het omgaan met beveiligingsproblemen in code
  • Kwetsbaarheden in de beveiliging en de gevolgen ervan identificeren
  • De best practices leren om deze fouten te vermijden

Doelgroep

Deze cursus is bedoeld voor C#-ontwikkelaars die aan webapplicaties werken.

Ingangsadvies: algemene ervaring in C#- en webontwikkeling

Delivery In-company (op locatie of online)
Duur 3 opeenvolgende dagen
Groepsgrootte Maximaal 12 deelnemers
Aanpassing De training kan worden aangepast aan uw organisatie, context en leerdoelen.
Taal Engels
Investment Op aanvraag
Brochure downloaden

Programma

Dag 1

Basisprincipes van beveiliging

Wat is beveiliging?

Bedreiging en risico

Soorten bedreigingen voor computersystemen

Gevolgen van onveilige software

Beperkingen en de markt

Bugs, kwetsbaarheden en exploits

Categorisering van bugs

  • Zeven verderfelijke koninkrijken
  • Common Weakness Enumeration (CWE)
  • CWE/SANS-top 25 van gevaarlijkste softwarefouten
  • Kwetsbaarheden in de omgeving en de afhankelijkheden

De top tien van OWASP

A1 - Injectie

  • Injectieprincipes
  • Injectieaanvallen
  • SQL-injectie
  • Basisbeginselen SQL-injectie
  • Lab - SQL-injectie
  • Aanvalstechnieken
  • Op inhoud gebaseerde blinde SQL-injectie
  • Op tijd gebaseerde blinde SQL-injectie
  • Best practices voor SQL-injectie
  • Inputvalidatie
  • Outputcodering
  • Geparameteriseerde query's
  • Andere best practices
  • Lab - Voorbereide statements gebruiken
  • Casestudy - Fortnite-accounts hacken
  • Code-injectie
  • Commando-injectie
  • Lab - Commando-injectie
  • Best practices voor commando-injectie
  • Lab - Best practices voor commando-injectie
  • Casestudy - Commando-injectie
  • Scriptinjectie
  • Best practices voor injectie
  • Inputvalidatie
  • Outputopschoning
  • De output coderen en escapen
  • Uitdagingen bij het coderen

A2 - Gebroken authenticatie

  • Basisprincipes van authenticatie
  • Zwakke punten in authenticatie
  • Spoofing op het web
  • Casestudy - PayPal-tweefactorauthenticatie omzeilen
  • Wachtwoordbeheer
  • Inkomend wachtwoordbeheer
  • Accountwachtwoorden opslaan
  • Plaintext-wachtwoorden bij Facebook
  • Lab - waarom is het hashen van wachtwoorden alleen niet genoeg?
  • Woordenboekaanvallen en brute forcing
  • Salting
  • Adaptieve hashfuncties voor wachtwoordopslag
  • Wachtwoord onderweg
  • Wachtwoordbeleid
  • Zwakke en sterke wachtwoorden
  • Wachtzinnen gebruiken
  • Lab - een wachtwoordbeleid toepassen
  • Het datalek bij Ashley Madison
  • De woordenboekaanval
  • De ultieme aanval
  • Gebruik van de resultaten en de geleerde lessen
  • Beheer van uitgaande wachtwoorden
  • Hardgecodeerde wachtwoorden
  • Lab - Hardgecodeerd wachtwoord
  • Wachtwoord in configuratiebestand
  • Gevoelige informatie in het geheugen beschermen
  • Uitdagingen bij geheugenbescherming
  • Gevoelige data opslaan in het geheugen
  • Lab - Gevoelige data opslaan in het geheugen met SecureString
  • Sessiebeheer
  • Essentiële functies voor sessiebeheer
  • Waarom beschermen we sessie-ID's - sessiekaping
  • Best practices voor sessie-ID's
  • Onvoldoende sessieafloop
  • Sessiefixatie
  • Cross-site vervalsing van requests (CSRF)
  • Lab - Cross-site requestvervalsing
  • Best practices voor CSRF
  • Lab - CSRF-bescherming met tokens
  • Cookiebeveiliging
  • Best practices voor cookiebeveiliging
  • Cookieparameters

Dag 2

De top tien van OWASP

A3 - Blootstelling aan gevoelige data

  • Blootstelling van informatie
  • Blootstelling door geëxtraheerde data en aggregatie
  • Gelekte systeeminformatie
  • Lekken van systeeminformatie
  • Vertrouwen op toegankelijkheidsmodificatoren
  • Lab - ongepaste bescherming door toegankelijkheidsmodificator
  • Best practices bij blootstelling aan informatie

A4 - Externe XML-entiteiten (XXE)

  • DTD en de entiteiten
  • Uitbreiding van entiteiten
  • Aanval van een externe entiteit (XXE)
  • Bestandsinclusie met externe entiteiten
  • Server-side requestvervalsing met externe entiteiten
  • Lab - Aanval van een externe entiteit
  • Casestudy - XXE-aanval op enkele populaire services
  • XXE voorkomen

A5 - Gebroken toegangscontrole

  • Basisprincipes van toegangscontrole
  • Ontbrekende of onjuiste autorisatie
  • Het niet beperken van URL-toegang
  • Confused deputy
  • Onveilige directe objectverwijzing (IDOR)
  • Lab - Onveilige directe objectverwijzing
  • Autorisatie omzeilen via door gebruiker beheerde sleutels
  • Casestudy - Autorisatieomleiding op Facebook
  • Bestanden uploaden
  • Onbeperkte upload van bestanden
  • Best practices
  • Lab - Onbeperkte upload van bestanden

A6 - Verkeerde configuratie van de beveiliging

  • Configuratieprincipes
  • Verkeerde serverconfiguratie
  • Configuratiebeheer
  • Best practices voor NET- en IIS-configuratie
  • NET-configuratie
  • IIS-configuratie

A7 - Cross-site scripting (XSS)

  • Basisprincipes van cross-site scripting
  • Typen cross-site scripting
  • Persistente cross-site scripting
  • Gereflecteerde cross-site scripting
  • Cross-site scripting aan de clientkant (DOM-gebaseerd)
  • Casestudy - Yahoo mail stored XSS
  • Lab - Gereflecteerde en opgeslagen XSS
  • Best practices voor XSS-bescherming
  • Beschermingsprincipes - escaping
  • Extra beschermingslagen
  • Principes voor bescherming aan de clientkant
  • XSS-beschermings-API's
  • Requestvalidatie in ASP.NET
  • Andere XSS-beschermingstechnieken
  • Lab - Best practices voor XSS

A8 - Onveilige deserialisatie

  • Uitdagingen voor serialisatie en deserialisatie
  • Onvertrouwde streams deserialiseren
  • Best practices bij deserialiseren
  • Eigenschapgeoriënteerd programmeren (POP)
  • Best practices voor POP
  • Lab - Een POP-payload maken en gebruiken

A9 - Componenten gebruiken met bekende kwetsbaarheden

  • Kwetsbare componenten gebruiken
  • De omgeving beoordelen
  • Hardening
  • Functionaliteit importeren uit niet-vertrouwde bronnen
  • Casestudy - Het datalek bij British Airways
  • Beheer van kwetsbaarheden
  • Patchbeheer
  • Databases en scantools voor kwetsbaarheden
  • Kwetsbaarheidsbeoordeling - CVSS
  • Lab - kwetsbaarheden vinden van gebruikte componenten
  • Het buildproces en CI/CD
  • Afhankelijkheden controleren in Cake

A10 - Onvoldoende logging en monitoring

  • Principes voor logging en monitoring
  • Logging
  • Onvoldoende logging
  • Best practices voor logging
  • Monitoring
  • Best practices voor monitoring

Beveiliging van webtoepassingen buiten de top tien

  • Beveiliging aan de clientkant
  • Same Origin Policy
  • Eenvoudige request
  • Preflightrequest
  • De Same Origin Policy omzeilen
  • Resources delen van verschillende herkomst
  • Frame-sandboxing
  • Clickjacking
  • Best practices voor bescherming tegen clickjacking
  • Lab - Clickjacking
  • Javascript-kaping

Dag 3

Veelvoorkomende zwakke plekken in de beveiliging van software

Inputvalidatie

  • Principes voor inputvalidatie
  • Zwarte lijsten en witte lijsten
  • Validatie met regex
  • Wat valideren - het aanvalsoppervlak
  • Wanneer valideren - validatie vs transformaties
  • Waar valideren - verdediging in de diepte
  • Server- versus clientvalidatie
  • Behandeling van integers
  • Signed getallen weergeven
  • Integervisualisatie
  • Problemen met integers
  • Integeroverflow
  • Lab - Integeroverflow
  • Signed/unsigned-verwarring
  • Lab - Signed/unsigned-verwarring
  • Integertruncatie
  • Best practices
  • Upcasting
  • Testen van precondities
  • Testen van postcondities
  • Grote integerbibliotheken gebruiken
  • Integerverwerking in C#
  • Lab - Checked arithmetics
  • Andere numerieke problemen
  • Delen door nul
  • Onveilige reflectie
  • Reflectie zonder validatie
  • Lab - onveilige reflectie
  • Onveilige native code
  • Native code-afhankelijkheid
  • Lab - onveilige native code
  • Enkele andere problemen met inputvalidatie

Beveiligingsfuncties

  • .NET-platformbeveiliging
  • Beveiliging van de codetoegang
  • Bewijzen
  • Rechten
  • The Stack Walk
  • Lab - Beveiliging van de codetoegang
  • Het transparantiemodel
  • Best practices
  • Lab - experimenteren met het transparantiemodel
  • Rolgebaseerde beveiliging
  • Principal en identiteit
  • Rolgebaseerde rechten
  • Imitatie
  • Lab - rolgebaseerde beveiliging
  • .NET-code en -toepassingen beschermen
  • Code signing

Fouten

  • Principes voor afhandeling van fouten en excepties
  • Foutafhandeling
  • Een misleidende statuscode teruggeven
  • Blootstelling aan informatie door foutrapportage
  • Ontbrekende foutpagina's
  • Afhandeling van excepties
  • In het catch-blok. En wat nu?
  • Leeg catch-blok
  • Best practices voor catch-blokken
  • Te brede throws
  • Null-pointerexcepties afvangen
  • Afhandeling van excepties in C#
  • Lab - Gedoe bij de afhandeling van excepties

Codekwaliteit

  • Data
  • Arrays en ToString()
  • Initialisatie en opschoning
  • Niet-geïnitialiseerde variabele
  • Cycli voor klasseninitialisatie
  • Lab - Initialisatiecycli
  • Niet-vrijgegeven resource
  • Valkuilen van objectgeoriënteerd programmeren
  • Toegankelijkheidsmodificatoren
  • Overerven en overschrijven
  • Equals() implementeren
  • Mutabiliteit
  • Alleen-lezen-collecties
  • Lab - muteerbaar object
  • Klonen
  • Gevoelige klassen klonen - object hijacking
  • Object hijacking - best practices
  • Serialisatie
  • Serialiseren van gevoelige data
  • Best practices voor serialisatie
  • Lab - Serialiseren van gevoelige data
  • DoS met deserialisatie
  • Geheugenlekken tijdens serialisatie

Samenvatting

Principes voor veilig programmeren

  • Grondbeginselen van robuust programmeren door Matt Bishop
  • Veilige ontwerpprincipes van Saltzer en Schröder
  • Nog enkele principes

En wat nu?

  • Verdere bronnen en naslagwerken
  • Bronnen voor .NET en C#

Verdere labs en uitdagingen

Methodiek

Een blended learning-traject: live training onder begeleiding van een instructeur met laboefeningen in een eersteklas e-learningsysteem. Je houdt tot 3 maanden na de training toegang tot het e-learningsysteem om de laboefeningen en het materiaal opnieuw te bekijken.

Platform: Windows
Labs: hands-on

Certificering

Na het volgen van deze training ontvangen deelnemers een certificaat van High Tech Institute.