Alle Artikel

Basic Authentication: wie die einfachste Methode zum Schutz einer HTTP-Ressource funktioniert

HTTP Basic Authentication ist eine der ältesten und einfachsten Methoden, eine Ressource per Passwort zu schützen: Der Browser fragt Benutzername und Passwort ab, und beide werden bei jeder Anfrage an den Server mitgeschickt. Genau diese Einfachheit ist auch die größte Schwäche.

Wie der Authorization-Header entsteht

Benutzername und Passwort werden mit einem Doppelpunkt verbunden (benutzer:passwort), anschließend wird die gesamte Zeichenkette Base64-kodiert und in den Header Authorization: Basic <kodierte_zeichenkette> eingesetzt. Der Browser sendet diesen Header nach der ersten erfolgreichen Anmeldung automatisch bei jeder weiteren Anfrage mit.

Warum Base64 keine Sicherheit bietet

Base64 ist ein Kodierungsschema, keine Verschlüsselung: Jeder kann die Zeichenkette innerhalb von Sekunden ohne jeglichen Schlüssel zurück in benutzer:passwort dekodieren. Wird die Anfrage abgefangen — etwa über ein ungesichertes öffentliches WLAN —, liegen die Zugangsdaten sofort offen.

Umlaute, ß und die Größe des Base64-Tokens

Base64 kodiert Bytes, nicht Zeichen — deshalb zählt die Kodierung der Ausgangszeichenkette. Ein Buchstabe ohne Umlaut belegt in UTF-8 nur 1 Byte, während ä, ö, ü und ß jeweils 2 Byte belegen. Ein Passwort wie Straße123 oder Müller&Söhne erzeugt dadurch ein spürbar längeres Base64-Token als ein rein ASCII-basiertes Passwort gleicher Zeichenzahl. Das ß bringt zusätzlich eine Eigenheit mit: Sein Großbuchstabe ẞ wurde erst 2017 offiziell in die deutsche Rechtschreibung aufgenommen, weshalb ältere Systeme beim Groß-/Kleinschreibungsvergleich von Benutzernamen mit ß inkonsistent reagieren können.

Wofür man das braucht

  • Einen Staging-Server oder ein internes Tool während der Entwicklung schnell per Passwort schützen.
  • Einen korrekten Authorization-Header bauen, um eine API manuell mit curl oder Postman zu testen.
  • Verstehen, warum Basic Auth über einfaches HTTP als ernste Sicherheitslücke gilt.

Basic Auth kennt keinen eingebauten Logout

Der Browser speichert die Zugangsdaten zwischen und hängt den Authorization-Header automatisch an jede weitere Anfrage an denselben Origin an, bis der Tab geschlossen wird — das Protokoll sieht schlicht keinen Standard-"Abmelden"-Button vor. Um einen Nutzer zwangsweise auszuloggen, greifen Server zu Tricks: absichtlich ein 401 mit anderem realm-Wert zurückgeben oder darauf setzen, dass der Nutzer selbst alle Browser-Tabs schließt.

Tool ausprobieren