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: Linux, Windows.
Labs: Praktische Übungen
Ihre in Java geschriebene Webanwendung funktioniert wie vorgesehen, also sind Sie 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. All dies wird in den Kontext von Java gestellt und um Kernfragen der Programmierung erweitert, wobei die Sicherheitsfallen der Java-Sprache und des Java-Frameworks erörtert werden.
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-Entwickler, die an Webanwendungen arbeiten.
Preparedness: Allgemeine Java- 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
- 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 Aussagen verwenden
- Fallstudie - Hacken von Fortnite-Konten
- Code-Einspritzung
- Befehl Injektion
- Übung - Befehlsinjektion
- Bewährte Praktiken der Befehlsinjektion
- Runtime.exec() verwenden
- ProcessBuilder verwenden
- Fallstudie - Shellshock
- 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
- 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 - Verwendung von Klassen für die Geheimhaltung
- 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
- Java-bezogene Komponenten - bewährte Verfahren
- Tomcat-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
- Labor - Bewährte XSS-Verfahren
A8 - Unsichere Deserialisierung
- Herausforderungen bei der Serialisierung und Deserialisierung
- Deserialisierung nicht vertrauenswürdiger Streams
- Bewährte Verfahren zur Deserialisierung
- ReadObject verwenden
- Versiegelte Objekte
- Vorausschauende Deserialisierung
- Eigenschaftsorientierte Programmierung (POP)
- Bewährte POP-Praktiken
- Ü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
- Ü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
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
- Vorzeichenlose / vorzeichenbehaftete Verwechslung in Java
- Ganzzahlige Trunkierung
- Bewährte Praktiken
- Upcasting
- Vorbedingungstest
- Nachbedingungstest
- Große Ganzzahl-Bibliotheken verwenden
- Integer-Verarbeitung in Java
- Übung - Umgang mit Integer
- Andere numerische Probleme
- Division durch Null
- Arbeiten mit Gleitkommazahlen
- 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
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
Code-Qualität
- Daten
- Arrays und toString()
- Initialisierung und Bereinigung
- Konstruktoren und Destruktoren
- Zyklen zur Initialisierung der Klasse
- Labor - Initialisierungszyklen
- Unveröffentlichte Ressource
- Fallstricke der objektorientierten Programmierung
- Modifikatoren für Barrierefreiheit
- Overriding und Zugänglichkeitsmodifikatoren
- Vererbung und Overriding
- Implementierung von equals()
- Wandlungsfähigkeit
- 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
Die Teilnehmer erhalten ein Zertifikat des High Tech Institute für die Teilnahme an dieser Schulung.

