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.
Ihre in C# geschriebene Webanwendung funktioniert wie gewünscht, Sie sind also 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 sowohl in Bezug auf den Umfang als auch auf die Details weit darüber hinausgehen, wobei all dies in den Kontext von C# gestellt und um zentrale Fragen der Programmierung erweitert 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 C#-Entwickler, die an Webanwendungen arbeiten.
Preparedness: Allgemeines C# und Web-Entwicklung.
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
- 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 Aussagen verwenden
- Fallstudie - Hacken von Fortnite-Konten
- Code-Einspritzung
- Befehl Injektion
- Übung - Befehlsinjektion
- Bewährte Praktiken der Befehlsinjektion
- Übung - Bewährte Praktiken der Befehlsinjektion
- Fallstudie - Befehlsinjektion
- Skript-Injektion
- 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
- 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
- Übung - Speichern von sensiblen Daten im Speicher mit SecureString
- 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
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
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
- 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
- Überprüfung von Anfragen in ASP.NET
- Weitere Techniken zum Schutz vor XSS
- Labor - Bewährte XSS-Verfahren
A8 - Unsichere Deserialisierung
- Herausforderungen bei der Serialisierung und Deserialisierung
- Deserialisierung nicht vertrauenswürdiger Streams
- Bewährte Verfahren zur Deserialisierung
- Eigenschaftsorientierte Programmierung (POP)
- Bewährte POP-Verfahren
- Übung - Erstellen und Verwenden einer POP-Nutzlast
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 Cake
A10 - Unzureichende Protokollierung und Überwachung
- Grundsätze der Protokollierung und Überwachung
- Protokollieren
- Unzureichende Protokollierung
- Beste Praktiken für die Protokollierung
- Ü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
Tag 3
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
- Labor - Signierte / unsignierte Verwechslung
- Ganzzahlige Trunkierung
- Bewährte Praktiken
- Upcasting
- Vorbedingungstest
- Nachbedingungstest
- Große Ganzzahl-Bibliotheken verwenden
- Integer-Verarbeitung in C#
- Labor - Überprüfte Arithmetik
- Andere numerische Probleme
- Division durch Null
- Unsichere Reflexion
- Reflexion ohne Validierung
- Labor - Unsichere Reflexion
- Unsicherer nativer Code
- Abhängigkeit von nativem Code
- Übung - Unsicherer nativer Code
- Einige andere Probleme bei der Eingabevalidierung
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
Fehler
- Grundsätze der Fehler- und Ausnahmebehandlung
- Fehlerbehandlung
- Rückgabe eines irreführenden Statuscodes
- 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
- Ausnahmebehandlung in C#
- Übung - Chaos bei der Behandlung von Ausnahmen
Code-Qualität
- Daten
- Arrays und ToString()
- Initialisierung und Bereinigung
- Uninitialisierte Variable
- Zyklen zur Initialisierung der Klasse
- Labor - Initialisierungszyklen
- Unveröffentlichte Ressource
- Fallstricke der objektorientierten Programmierung
- Modifikatoren für Barrierefreiheit
- Vererbung und Overriding
- Implementieren von Equals()
- Wandlungsfähigkeit
- Schreibgeschützte Sammlungen
- Lab - Veränderliches Objekt
- Klonen
- Klonen sensibler Klassen - Objekt-Hijacking
- Objekt-Hijacking - bewährte Praktiken
- Serialisierung
- Serialisierung sensibler Daten
- Bewährte Praktiken der Serialisierung
- Übung - Serialisierung sensibler Daten
- DoS mit Deserialisierung
- Speicherlecks bei der 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
Zertifizierung
Nach der Teilnahme an dieser Schulung erhalten die Teilnehmer ein Zertifikat des High Tech Institute.

