A04 - Cryptographic Failures
als Präsentation ▻Auf Platz 4 der OWASP Top 10 2025: Cryptographic Failures.
Fehler bei der Verschlüsselung oder fehlende Verschlüsselung kann dazu führen dass sensible Daten zugänglich werden.
▻Maßnahmen
- Klassifizierung der Daten die verarbeitet, gespeichert oder übertragen werden. Welche Daten sind aufgrund von Datenschutzgesetzen, behördlichen Vorschriften oder Geschäftsanforderungen sensibel?
- Sicherstellen, dass vertrauliche Daten bei der Übertragung (“in transit”) und Speicherung (“at rest”) durch geeignet Verschlüsselung geschützt werden.
- Kein unnötiges Speichern vertraulicher Daten. Löschung nicht mehr benötigter Daten. Daten, die es nicht gibt, können auch nicht gestohlen werden.
- Sicherstellen, dass starke Algorithmen und Schlüssel verwendet werden.
- Sicherstellen, dass Passwörter mit einem speziell für Passwortschutz entwickelten Algorithmus gespeichert werden.
Starke Algorithmen?
Was passiert, wenn ich das nicht tue, sondern einen veralteten Algorithmus verwende?
▻Beispiel Passwort Hash
Auch wenn man noch nichts über Kryptographie weis, kann man mit dem Befehl
password_hash in PHP garantiert einen guten Algorithmus verwenden.
Ein Beispiel aus einem Projekt: hier wurde der Algorithmus sha1
verwendet um das Passwort zu verschleiern. Wenn sich jemand
versucht einzuloggen wird das so geprüft:
$passwordhashed = sha1($password);
$stmt = $db->prepare('SELECT * FROM `users` WHERE username = ? AND password = ?');
$stmt->execute(array($username, $passwordhashed));
In der Datenbank sehen die Daten so aus:
INSERT INTO `users` (`id`, `username`, `password`) VALUES
(1, 'student', '08df1a7479ca768d03481fb6534ebe844cc2a2d5'),
(2, 'admin', 'dd94709528bb1c83d08f3088d4043f4742891f4f');
Das sieht ja erst mal gut aus: falls diese Datenbank in falsche Hände gerät sind die Passwörter nicht direkt lesbar.
▻sha1 ist ein schwacher Algorithmus
Nimmt man den gehashten Passwort String des admin-users, und googelt danach, so findet man direkt diese Seite:


Mehr zum Speichern von Passwörtern im OWASP Password Storage Cheat Sheet
▻Beispiel https
Um die HTTP Verbindung zu verschlüsseln brauchen wir das Protokoll TLS und ein Zertifikat.
Wenn man den Webserver installiert und konfiguriert muss man das wissen und richtig machen.
Kapitel
- Das Web Und Html
- Css
- Css Layout
- Urls
- Formulare
- Javascript Dom
- Php Vorbereitung
- Php
- Php Db Lesen
- Session
- Php Db Schreiben
- Php Db Optimierung
- Grafik
- Javascript
- Applied Js And Css
- Js Http
- Json
- Security
- Threat Modeling
- A01 - Zugriffskontrolle
- A02 - Fehlkonfiguration
- A03 - Software Supply Chain Failures
- A04 - Cryptographic Failures
- A05 - Injection + XSS
- A06 - Insecure design
- A07 - Authentication Failures
- A08 - Software or Data Integrity Failures
- A09 - Security Logging and Alerting Failures
- A10 - Mishandling of Exceptional Conditions
- Prompt Injection
- Advanced Javascript
- Qualitaet
- Kommandozeile
- Git
- Http