Nachdem wir die Verbindung zwischen Browser und Server abgesichert haben, stellt sich die nächste Frage: Wer darf überhaupt auf die Webanwendung zugreifen?
Authentifizierungsverfahren und Identitätsmanagement kennst du bereits aus Modul B4. Hier konzentrieren wir uns darauf, wie du diese Konzepte in einer Webanwendung praktisch umsetzt und absicherst.

„Unsere Webanwendungen sind durch ein Login geschützt und wer sein Passwort nicht kennt, kommt nicht rein. Was brauchen wir noch?“
„Jetzt geht es darum, wie sicher wir Multi-Faktor-Authentifizierung (MFA) und andere Schutzmechanismen in einer Webanwendung implementieren und was dabei schiefgehen kann.“

💡 Authentifizierung in Webanwendungen bedeutet insbesondere: Nicht nur ob du eine Authentifizierung einsetzt, sondern auch wie du sie implementierst und absicherst, entscheidet über die Sicherheit.
Für Webanwendungen ist entscheidend, wie MFA (Multi Faktor Authentifizierung) implementiert wird. Als Entwickler oder Administrator musst du den richtigen zweiten Faktor für deine Anwendung wählen:

✅ Faustregel: Bevorzuge phishing-resistente MFA-Verfahren wie FIDO2/WebAuthn. TOTP und moderne Push-Verfahren bieten einen guten Schutz, sind aber grundsätzlich weiterhin durch Phishing angreifbar. SMS sollte wegen zusätzlicher Risiken wie SIM-Swapping und Angriffen auf die Mobilfunkinfrastruktur nur eingesetzt werden, wenn stärkere Verfahren nicht zur Verfügung stehen.
Je höher der Schutzbedarf, desto stärker und insbesondere phishing-resistenter sollte das eingesetzte Authentifizierungsverfahren sein.
Auch das stärkste Passwort muss in einer Form gespeichert werden, die es der Webanwendung ermöglicht, es beim Login zu prüfen. Dieser Ort ist in der Regel eine Datenbank. Wird diese Datenbank kompromittiert (und Datenbankleaks passieren regelmäßig, auch bei großen Unternehmen wie z. B. LinkedIn, Adobe oder Dropbox), hängt alles davon ab, wie die Passwörter gespeichert wurden.
Im Klartext? Hoffentlich nicht, das wäre in jedem IT-Sicherheitsaudit ein kritisches Finding. Denn dann hat ein Angreifer sofort Zugriff auf alle Passwörter. Als einfacher Hash? Auch problematisch: Ohne Salt helfen vorberechnete Tabellen, schnelle Hashverfahren ermöglichen zudem massive Offline-Angriffe. Deshalb sind ein individueller Salt und ein sicheres, zeitgemäßes Passwort-Hashverfahren keine theoretische Frage, sondern die letzte Verteidigungslinie.

Passwörter dürfen niemals im Klartext gespeichert werden. Auch einfache Hashes (MD5, SHA-1) reichen nicht, da sie mittlerweile zu schnell berechenbar sind. Sichere Algorithmen sind aktuell:

Jedes Passwort sollte mit einem einzigartigen Salt (Zufallswert) gehasht werden. Der Salt wird vor dem Hashen an das Passwort angehängt und zusammen mit dem Hash gespeichert. Warum? Ohne Salt erzeugen identische Passwörter auch identische Hashes und ein Angreifer könnte anhand der Hashes erkennen, welche Benutzer dasselbe Passwort verwenden. Mit Salt ist jeder Hash einzigartig, selbst wenn das Passwort identisch ist.
💡 Um zu erkennen, um welchen Hash-Algorithmus es sich höchstwahrscheinlich handelt, können Tools wie hash-identifier genutzt werden. Es ist in Kali Linux verfügbar. Online kann zum Beispiel die folgende Website genutzt werden: https://hashes.com/en/tools/hash_identifier
Brute-Force-Angriffe auf Login-Seiten sind alltäglich. Jeden Tag werden automatisiert Millionen von Benutzername-Passwort-Kombinationen gegen Webanwendungen getestet. Das passiert zum Beispiel oft mit Zugangsdaten aus früheren Datenlecks (sogenanntes Credential Stuffing). Ohne Rate Limiting kann ein Angreifer in wenigen Minuten tausende Kombinationen und bekannte Passwörter durchprobieren. Gute Gegenmaßnahmen sind vorallem:
⚠️ Achtung: Brute-Force-Schutz für den zweiten Faktor nicht vergessen! Ein häufig übersehenes Problem ist, dass ein TOTP-Code nur sechs Ziffern lang ist. Das sind gerade einmal 1.000.000 mögliche Kombinationen. Ohne Schutzmaßnahmen kann ein Angreifer, der bereits das Passwort kennt, den 2FA-Code innerhalb von Sekunden durchprobieren. Deshalb muss auch der Token-Verifizierungsendpunkt abgesichert werden:

OAuth2 und OpenID Connect kennst du aus Modul B4. Zur Erinnerung: OAuth2 regelt die Autorisierung (welche Ressourcen darf eine App nutzen?), OIDC ergänzt die Authentifizierung (wer ist der Benutzer?). In der Praxis nutzt du OIDC, wenn du z.B. „Mit Google anmelden“ oder „Mit Microsoft anmelden“ in deiner Webanwendung anbietest.
Für die NovaHealth bedeutet das konkret: Statt eine eigene Benutzerverwaltung mit Passwort-Reset, MFA-Enrollment und Account-Sperren zu bauen, könnten die Verantwortlichen die Authentifizierung an einen Identity Provider wie Microsoft Entra ID delegieren und sich letztendlich dadurch auf die Entwicklung und Administration der eigentlichen Anwendung konzentrieren. Es gibt Argumente für und gegen eine solche Delegierung.
Nach einer erfolgreichen Authentifizierung muss die Webanwendung den Benutzer wiedererkennen, weshalb Sessions verwendet werden. Unsicheres Session Management ist eine der häufigsten Schwachstellen in Webanwendungen.

„Was kann denn an einer Session unsicher sein? Da ist ein Nutzer doch hoffentlich schon sicher eingeloggt.“
„Leider eine ganze Menge. Wenn die Session-ID vorhersagbar ist, kann ein Angreifer sie erraten. Wenn sie nach dem Login nicht erneuert wird, kann er eine vorbereitete Session unterschieben. Und wenn sie ewig gültig bleibt, hat ein Angreifer beliebig viel Zeit, sie zu stehlen.“

Secure, HttpOnly und SameSite (siehe nächstes Thema „Schutz vor gängigen Webangriffen“). Wenn sensible Daten ins Cookie müssen, sollte es sicher verschlüsselt und signiert werden. Auch bei Verschlüsselung gilt: Daten aus dem Cookie kommen vom Nutzer und gelten daher eher nicht als vertrauenswürdig.✅ Merke: Session Management heißt: Zufällige IDs, neue ID nach Login, Timeouts setzen, Daten serverseitig speichern.
Vereinfacht gesagt: Authentifizierung in Webanwendungen ist mehr als nur ein Login-Formular. Du brauchst:
Jede einzelne Schwachstelle in dieser Kette kann die gesamte Authentifizierung aushebeln.
Du bist dran: Schauen wir, ob du die Konzepte rund um Authentifizierung und Session Management in Webanwendungen verstanden hast. Beantworte die folgende Quizfrage: