Ihre in Java oder C# geschriebene Anwendung funktioniert wie vorgesehen, und Sie sind fertig, richtig? Aber haben Sie daran gedacht, falsche Werte einzugeben? 16Gbs Daten? Eine Null? Ein Hochkomma? Negative Zahlen, oder speziell -2^32? Denn das ist es, was die Bösewichte tun werden - und die Liste ist noch lange nicht vollständig.

Der Umgang mit Sicherheit erfordert ein gesundes Maß an Paranoia, und genau das bietet dieser Kurs: ein starkes emotionales Engagement durch viele praktische Übungen und Geschichten aus dem wirklichen Leben, um die Code-Hygiene erheblich zu verbessern. Fehler, Konsequenzen und beste Praktiken sind unser Blut, Schweiß und Tränen.

In Anlehnung an die OWASP Top Ten werden die üblichen Sicherheitsprobleme von Webanwendungen behandelt, die jedoch in Bezug auf den Umfang und die Details weit darüber hinausgehen, wobei all dies in den Kontext der besprochenen Programmiersprachen gestellt wird.

Damit Sie auf die Kräfte der dunklen Seite vorbereitet sind.

Damit nichts Unerwartetes passiert.

Nichts.

PRAKTISCHE INFO

  • Wenn eine Schulung vor Ort nicht möglich ist, können wir eine interaktive Online-Schulung (virtuell) oder eine Hybrid-Schulung anbieten. Das Standardprogramm mit 3 Tagen Inhalt kann auch in 5 halben Tagen (von Montag bis Freitag) durchgeführt werden.
  • Nehmen Sie an unserem kostenlosen Webinar um mehr zu erfahren.
  • Sind Sie neugierig, wie Sie den Return on Investment (ROI) von Schulungen zur sicheren Codierung quantifizieren können? Sehen Sie sich diesen Artikel.

Objektiv

  • Verständnis für Sicherheitsfragen bei Webanwendungen;
  • Detaillierte Analyse der OWASP Top Ten Elemente;
  • Über die niedrig hängenden Früchte hinausgehen;
  • Erläutern Sie Ansätze für den Umgang mit Sicherheitsproblemen im Code;
  • Identifizieren Sie Sicherheitsschwachstellen und deren Folgen;
  • Erfahren Sie, wie Sie diese Fehler am besten vermeiden können.

Zielgruppe

Dieser Kurs richtet sich an Java- und C#-Entwickler, die an Webanwendungen arbeiten.

Bereitschaft: Allgemeine Java-, C#- und Web-Entwicklung.

Lieferung Im Unternehmen (vor Ort oder online)
Dauer 4 aufeinanderfolgende Tage
Größe der Gruppe Bis zu 12 Teilnehmer
Anpassung Das Training kann auf Ihre Organisation, Ihren Kontext und Ihre Lernziele zugeschnitten werden.
Sprache Englisch
Investition Auf Anfrage
Broschüre herunterladen

Programm

Tag 1

Grundlagen der Sicherheit

Was ist Sicherheit?

Bedrohung und Risiko

Arten von Bedrohungen für Computersysteme

Folgen von unsicherer Software

Zwänge und der Markt

Bugs, Schwachstellen und Exploits

Kategorisierung von Fehlern

  • Sieben verderbliche Königreiche
  • Gemeinsame Schwachstellenaufzählung (CWE)
  • CWE/SANS Top 25 der gefährlichsten Software-Fehler
  • SEI Cert Richtlinien für sichere Kodierung
  • Schwachstellen in der Umgebung und den Abhängigkeiten

Die OWASP Top Ten

A1 - Injektion

  • Prinzipien der Injektion
  • Injektionsangriffe
  • SQL-Einschleusung
  • Grundlagen der SQL-Injektion
  • Übung - SQL-Injektion
  • Angriffs-Techniken
  • Inhaltsbasierte blinde SQL-Injektion
  • Zeitbasierte blinde SQL-Injektion
  • Bewährte Praktiken für SQL-Injection
  • Eingabeüberprüfung
  • Kodierung der Ausgabe
  • Parametrisierte Abfragen
  • Andere bewährte Praktiken
  • Übung - Vorbereitete Anweisungen in C# verwenden
  • Fallstudie - Hacken von Fortnite-Konten
  • Code-Einspritzung
  • Befehl Injektion
  • Übung - Befehlsinjektion
  • Bewährte Praktiken der Befehlsinjektion
  • Runtime.exec() in Java verwenden
  • ProcessBuilder in Java verwenden
  • Bewährte Praktiken der Befehlsinjektion in C#
  • Übung - Bewährte Praktiken der Befehlsinjektion in C#
  • Fallstudie - Befehlsinjektion
  • Skript-Injektion
  • Injektion der Ausdruckssprache
  • Bewährte Praktiken der Injektion
  • Eingabeüberprüfung
  • Bereinigung der Ausgabe
  • Kodierung und Escaping der Ausgabe
  • Herausforderungen bei der Kodierung

A2 - Defekte Authentifizierung

  • Grundlagen der Authentifizierung
  • Schwächen bei der Authentifizierung
  • Spoofing im Internet
  • Fallstudie - Umgehung der Zwei-Faktor-Authentifizierung von PayPal
  • Bewährte Praktiken für Benutzeroberflächen
  • Sitzungsmanagement
  • Sitzungsverwaltung - das Wichtigste
  • Warum schützen wir Sitzungs-IDs - Session Hijacking
  • Bewährte Praktiken zur Sitzungs-ID
  • Unzureichender Ablauf der Sitzung
  • Sitzung fixieren
  • Cross-Site Request Forgery (CSRF)
  • Labor - Cross-Site Request Forgery
  • Bewährte CSRF-Verfahren
  • Übung - CSRF-Schutz mit Token
  • Cookie Sicherheit
  • Bewährte Praktiken für die Cookie-Sicherheit
  • Cookie-Parameter

Tag 2

Die OWASP Top Ten

A2 - Defekte Authentifizierung

  • Passwortverwaltung
  • Verwaltung eingehender Passwörter
  • Speichern von Kontopasswörtern
  • Klartext-Passwörter bei Facebook
  • Labor - Warum reicht das Hashing von Passwörtern nicht aus?
  • Wörterbuchangriffe und Brute-Forcing
  • Einsalzen
  • Adaptive Hash-Funktionen für die Speicherung von Passwörtern
  • Passwort unterwegs
  • Passwort-Politik
  • Schwache und starke Passwörter
  • Passphrasen verwenden
  • Übung - Anwenden einer Kennwortrichtlinie
  • Die Ashley Madison Datenschutzverletzung
  • Der Wörterbuch-Angriff
  • Der ultimative Angriff
  • Verwertung der Ergebnisse und der daraus gezogenen Lehren
  • Verwaltung ausgehender Passwörter
  • Hart kodierte Passwörter
  • Labor - Festcodiertes Passwort
  • Passwort in der Konfigurationsdatei
  • Schutz sensibler Informationen im Speicher
  • Herausforderungen beim Schutz der Erinnerung
  • Speichern von sensiblen Daten im Speicher
  • Speichern von sensiblen Daten im Speicher in C#
  • Übung - Speichern von sensiblen Daten im Speicher mit SecureString in C#

A3 - Exposition gegenüber sensiblen Daten

  • Informationsexposition
  • Exposition durch extrahierte Daten und Aggregation
  • Durchsickern von Systeminformationen
  • Auslaufende Systeminformationen
  • Verlassen Sie sich auf Zugänglichkeitsmodifikatoren
  • Labor - Unangemessener Schutz durch Zugänglichkeitsmodifikator
  • Bewährte Praktiken der Informationsexposition

A4 - Externe XML-Entitäten (XXE)

  • DTD und die Entitäten
  • Entitätserweiterung
  • Angriff auf externe Entitäten (XXE)
  • Einbindung von Dateien in externe Entitäten
  • Server-seitige Anfragefälschung mit externen Entitäten
  • Labor - Angriff einer externen Einheit
  • Fallstudie - XXE-Angriff auf einige beliebte Dienste
  • Verhindern von XXE in Java
  • Verhindern von XXE in C#

A5 - Defekte Zugangskontrolle

  • Grundlagen der Zugangskontrolle
  • Fehlende oder unzulässige Autorisierung
  • Versäumnis, den URL-Zugriff zu beschränken
  • Verwirrter Abgeordneter
  • Unsichere direkte Objektreferenz (IDOR)
  • Übung - Unsichere direkte Objektreferenz
  • Umgehung der Autorisierung durch benutzergesteuerte Schlüssel
  • Fallstudie - Umgehung der Autorisierung auf Facebook
  • Datei hochladen
  • Uneingeschränkter Datei-Upload
  • Bewährte Praktiken
  • Labor - Uneingeschränkter Datei-Upload

A6 - Sicherheit Fehlkonfiguration

  • Konfigurationsprinzipien
  • Server-Fehlkonfiguration
  • Konfigurationsmanagement
  • Java-bezogene Komponenten - bewährte Verfahren
  • Tomcat-Konfiguration
  • Bewährte Verfahren für die NET- und IIS-Konfiguration
  • NET-Konfiguration
  • IIS-Konfiguration

A7 - Website-übergreifendes Skripting (XSS)

  • Grundlagen des Cross-Site Scripting
  • Website-übergreifende Skripting-Typen
  • Anhaltendes Cross-Site-Scripting
  • Reflektiertes Cross-Site-Scripting
  • Client-seitiges (DOM-basiertes) Cross-Site-Scripting
  • Fallstudie - Yahoo mail stored XSS
  • Übung - Reflektiertes und gespeichertes XSS
  • Bewährte Praktiken zum Schutz vor XSS
  • Schutzprinzipien - Flucht
  • Zusätzliche Schutzschichten
  • Client-seitige Schutzprinzipien
  • XSS-Schutz-APIs in Java
  • XSS-Schutz-APIs in C#
  • Überprüfung von Anfragen in ASP.NET
  • Weitere Techniken zum Schutz vor XSS in C#
  • Übung - Bewährte XSS-Verfahren in C#

Tag 3

Die OWASP Top Ten

A8 - Unsichere Deserialisierung

  • Herausforderungen bei der Serialisierung und Deserialisierung
  • Deserialisierung nicht vertrauenswürdiger Streams
  • Bewährte Verfahren zur Deserialisierung
  • ReadObject in Java verwenden
  • Versiegelte Objekte
  • Vorausschauende Deserialisierung
  • Eigenschaftsorientierte Programmierung (POP)
  • Bewährte POP-Verfahren
  • Übung - POP-Nutzdaten erstellen

A9 - Verwendung von Komponenten mit bekannten Sicherheitslücken

  • Verwendung anfälliger Komponenten
  • Bewertung der Umwelt
  • Härtung
  • Importieren von Funktionen aus nicht vertrauenswürdigen Quellen
  • Fallstudie - Die Datenschutzverletzung bei British Airways
  • Management von Schwachstellen
  • Patch-Verwaltung
  • Schwachstellen-Datenbanken und Scanning-Tools
  • Bewertung der Schwachstellen - CVSS
  • Übung - Auffinden von Schwachstellen der verwendeten Komponenten
  • Der Build-Prozess und CI/CD
  • Abhängigkeitsüberprüfung in Maven
  • Abhängigkeitsüberprüfung in Cake
  • Übung - Aufspüren verwundbarer Komponenten während des Builds

A10 - Unzureichende Protokollierung und Überwachung

  • Grundsätze der Protokollierung und Überwachung
  • Protokollieren
  • Unzureichende Protokollierung
  • Beste Praktiken für die Protokollierung
  • Bewährte Java-Protokollierungsverfahren
  • Überwachung
  • Überwachung bewährter Praktiken

Sicherheit von Webanwendungen über die Top Ten hinaus

  • Client-seitige Sicherheit
  • Politik der gleichen Herkunft
  • Einfache Anfrage
  • Preflight-Anfrage
  • Umgehung der Richtlinie zur gleichen Herkunft
  • Ursprungsübergreifende gemeinsame Nutzung von Ressourcen
  • Rahmen-Sandboxing
  • Clickjacking
  • Bewährte Praktiken zum Schutz vor Clickjacking
  • Labor - Clickjacking
  • JavaScript-Hijacking

Häufige Schwachstellen in der Software

Eingabeüberprüfung

  • Grundsätze der Eingabevalidierung
  • Schwarze Listen und weiße Listen
  • Validierung mit Regex
  • Was zu validieren ist - die Angriffsfläche
  • Wann Sie validieren sollten - Validierung vs. Transformationen
  • Wo soll validiert werden - Verteidigung in der Tiefe
  • Server-seitige vs. Client-seitige Validierung
  • Umgang mit Integer
  • Darstellung von vorzeichenbehafteten Zahlen
  • Integer-Visualisierung
  • Ganzzahlige Probleme
  • Integer-Überlauf
  • Labor - Integer-Überlauf
  • Signierte / unsignierte Verwirrung
  • Vorzeichenlose / vorzeichenbehaftete Verwechslung in Java
  • Labor - Signierte / unsignierte Verwechslung
  • Ganzzahlige Trunkierung
  • Bewährte Praktiken
  • Upcasting
  • Vorbedingungstest
  • Nachbedingungstest
  • Große Ganzzahl-Bibliotheken verwenden
  • Integer-Verarbeitung in Java
  • Übung - Integer-Verarbeitung in Java
  • Integer-Verarbeitung in C#
  • Übung - Geprüfte Arithmetik in C#
  • Andere numerische Probleme
  • Division durch Null
  • Arbeiten mit Gleitkommazahlen in Java
  • Unsichere Reflexion
  • Reflexion ohne Validierung
  • Labor - Unsichere Reflexion
  • Unsicherer nativer Code
  • Abhängigkeit von nativem Code
  • Labor - Unsicheres JNI
  • Einige andere Probleme bei der Eingabevalidierung

Sicherheitsmerkmale

  • Sicherheit der Java-Plattform
  • Die Java-Programmiersprache und -Laufzeitumgebung
  • Typensicherheit und Sicherheit
  • Sicherheitsfunktionen der JRE
  • Der ClassLoader und der BytecodeVerifier
  • Zugriffskontrolle auf Anwendungsebene in Java
  • Berechtigungen und der Sicherheitsmanager
  • Bewährte Praktiken für Privilegien
  • Übung - Arbeiten mit Berechtigungen in Java
  • Rollenbasierte Zugriffskontrolle
  • Java-Authentifizierungs- und Autorisierungsdienste (JAAS)
  • Schutz von Java-Code und -Anwendungen
  • Code Unterzeichnung

Tag 4

Häufige Schwachstellen in der Software

Sicherheitsmerkmale

  • Sicherheit der .NET-Plattform
  • Code Access Sicherheit
  • Beweise
  • Berechtigungen
  • Der Stack Walk
  • Übung - Code-Zugriffssicherheit
  • Das Modell der Transparenz
  • Bewährte Praktiken
  • Labor - Experimentieren mit dem Transparenzmodell
  • Rollenbasierte Sicherheit
  • Auftraggeber und Identität
  • Rollenbasierte Berechtigungen
  • Nachahmung
  • Übung - Rollenbasierte Sicherheit
  • Schutz von .NET Code und Anwendungen
  • Code Unterzeichnung

Zeit und Zustand

  • Bewährte Praktiken der Thread-Verwaltung
  • Bewährte Methoden der Thread-Verwaltung in Java
  • Thread Pools
  • Bewährte Methoden der Thread-Verwaltung in C#
  • Bedingungen für das Rennen
  • Wettlaufbedingung in Objektdatenmitgliedern
  • Singleton Mitgliedsfelder
  • Lab - Singleton Mitgliedsfelder
  • Datei-Race-Bedingung
  • Zeitpunkt der Überprüfung bis zur Nutzungsdauer (TOCTTOU)
  • Labor - TOCTTOU
  • Unsichere temporäre Datei
  • Datenbank-Race-Bedingungen
  • Übung - Datenbank-Race-Bedingungen
  • Vermeiden von Race Conditions in Java
  • Vermeiden von Race Conditions in C#
  • Gegenseitiger Ausschluss und Sperren
  • Deadlocks
  • Gegenseitiger Ausschluss und Sperren in Java
  • Übung - Sperren in Java
  • Gegenseitiger Ausschluss und Sperren in C#
  • Übung - Sperren in C#
  • Synchronisierung und Thread-Sicherheit
  • Synchronisierung und Thread-Sicherheit in Java
  • Synchronisierung und Thread-Sicherheit in C#

Fehler

  • Grundsätze der Fehler- und Ausnahmebehandlung
  • Fehlerbehandlung
  • Rückgabe eines irreführenden Statuscodes
  • Erreichbare Behauptung
  • Offenlegung von Informationen durch Fehlerberichte
  • Fehlende benutzerdefinierte Fehlerseiten
  • Behandlung von Ausnahmen
  • Im Fangblock. Und was nun?
  • Leerer Catch-Block
  • Bewährte Praktiken für Fangblöcke
  • Übermäßig weite Würfe
  • Abfangen von NULL-Zeiger-Ausnahmen
  • Unsachgemäße Vervollständigung des letzten Blocks
  • Verschluckter FadenTod
  • Geprüfte Ausnahmen, die aus finally entkommen
  • Auslösen von nicht deklarierten geprüften Ausnahmen
  • Auslösen von RuntimeException, Exception oder Throwable
  • Übung - Chaos bei der Behandlung von Ausnahmen
  • Ausnahmebehandlung in C#

Code-Qualität

  • Daten
  • Arrays und toString()
  • Initialisierung und Bereinigung
  • Uninitialisierte Variable
  • Konstruktoren und Destruktoren
  • Zyklen zur Initialisierung der Klasse
  • Labor - Initialisierungszyklen
  • Unveröffentlichte Ressource
  • Fallstricke der objektorientierten Programmierung
  • Modifikatoren für Barrierefreiheit
  • Overriding und Erreichbarkeitsmodifikatoren in Java
  • Vererbung und Overriding
  • Implementierung von equals()
  • Wandlungsfähigkeit
  • Readonly-Sammlungen in C#
  • Lab - Veränderliches Objekt
  • Klonen
  • Klonen sensibler Klassen - Objekt-Hijacking
  • Objekt-Hijacking - bewährte Praktiken
  • Serialisierung

Einpacken

Grundsätze der sicheren Kodierung

  • Grundlagen der robusten Programmierung von Matt Bishop
  • Sichere Designprinzipien von Saltzer und Schröder
  • Einige weitere Grundsätze

Und was nun?

  • Weitere Quellen und Lektüre
  • .NET und C# Ressourcen
  • Weitere Labore und Herausforderungen zu tun

Methoden

Eine gemischte Lernreise: Live-Schulungen mit Ausbildern und Laborübungen in einem erstklassigen E-Learning-System. Sie haben noch 3 Monate nach der Schulung Zugang zum E-Learning-System, um die Laborübungen und das Material erneut zu studieren.

Plattform: Windows.
Labs: Praktische Übungen

Zertifizierung

Nach der Teilnahme an dieser Schulung erhalten die Teilnehmer ein Zertifikat des High Tech Institute.