Kurzlinks sind überall. Auf Visitenkarten, in E-Mails, hinter QR-Codes. Dienste wie Bitly, TinyURL oder das mittlerweile eingestellte goo.gl haben URL-Shortening zum Standard gemacht. Aber was passiert eigentlich, wenn man auf so einen Link klickt?
Open Redirect als Angriffsvektor
Ein URL-Shortener ist im schlimmsten Fall ein Open Redirect. Genau das listet die OWASP seit Jahren als bekanntes Sicherheitsproblem.
Nutzer sehen in der Adressleiste zunächst nur die Domain des Shorteners. Ob dahinter wikipedia.org oder eine Phishing-Seite wartet, ist vor dem Klick nicht erkennbar.
https://bit.ly/3xK9mPq → ???
Ohne eine Preview-Funktion oder Domain-Einschränkung ist der Kurzlink eine Blackbox.
Phishing über Redirect-Ketten
Angreifer nutzen URL-Shortener gezielt, um Phishing-Links zu verschleiern. Die Kette sieht typischerweise so aus:
- Opfer erhält eine E-Mail mit einem
bit.ly-Link - Der Link leitet auf einen weiteren Shortener weiter
- Am Ende landet das Opfer auf einer gefälschten Login-Seite
Jede Weiterleitung erschwert die Erkennung durch Spam-Filter und macht es Nutzern praktisch unmöglich, das tatsächliche Ziel vorab zu prüfen.
Token-Enumeration und Privacy
Viele URL-Shortener verwenden kurze, sequentielle oder leicht erratbare Tokens. Bei einem 6-Zeichen-Token aus Base62 gibt es rund 56 Milliarden Kombinationen — das klingt viel, ist aber maschinell in überschaubarer Zeit durchsuchbar.
Forscher haben gezeigt, dass sich über systematisches Ausprobieren private Google-Docs-Links, OneDrive-Freigaben und andere sensible URLs aufdecken lassen. Kurze Tokens sind ein Privacy-Problem.
Mein eigener Redirect-Service verwendet deshalb 12-Zeichen-Tokens mit über 71 Bit Entropie — rund 3,2 Trilliarden mögliche Kombinationen. Zusätzlich begrenzt Rate Limiting die Anzahl der Anfragen pro Minute.
Caching-Fallen: 301 vs. 302
Ein häufiger Fehler: Redirect-Services antworten mit 301 Moved Permanently. Browser cachen diesen Redirect dauerhaft. Wenn sich die Ziel-URL später ändert, folgt der Browser trotzdem dem alten Ziel.
302 Found ist für änderbare Kurzlinks die richtige Wahl — kombiniert mit Cache-Control: no-store, damit weder Browser noch Proxies den Redirect cachen.
Live-Demo: Dynamischer QR-Code
Der folgende QR-Code zeigt, wie statische QR-Codes und dynamische Kurzlinks zusammenspielen. Er führt immer zum Wikipedia-Artikel des heutigen Tages, ohne dass sich der QR-Code selbst ändert.
Ein Cronjob aktualisiert täglich das Ziel des Kurzlinks unter go.mathis-adler.dev. Der QR-Code bleibt dabei derselbe — nur die Weiterleitung ändert sich. Genau dafür sind dynamische Kurzlinks gemacht.
Warum ich diesen Service nicht öffentlich anbiete? Weil ein öffentlicher URL-Shortener genau die Probleme erzeugt, die in diesem Artikel beschrieben werden: Missbrauch durch Phishing, Moderation von Inhalten, Haftungsfragen und die Notwendigkeit, Nutzer zu tracken, um Abuse zu erkennen. Ein geschlossenes System — nur per API-Key und CLI verwaltbar — eliminiert diese Angriffsfläche komplett. Kein Registrierungsformular, keine Abuse-Reports, keine Moderation. Dafür volle Kontrolle und null Tracking.
DSGVO und Tracking
Die meisten kommerziellen URL-Shortener erfassen beim Klick:
- IP-Adresse (= personenbezogenes Datum nach DSGVO)
- User-Agent und Betriebssystem
- Referrer und Zeitpunkt
- Geolocation basierend auf der IP
Für Unternehmen, die solche Dienste einsetzen, entsteht ein datenschutzrechtliches Problem: Die Verarbeitung erfolgt auf Servern eines Drittanbieters, oft außerhalb der EU, ohne dass die betroffenen Personen davon wissen.
Ein selbst gehosteter Redirect-Service kann gezielt auf jegliches Logging verzichten — Privacy by Design statt nachträglicher Datenschutzerklärung.
Vendor Lock-In
Google hat goo.gl 2018 eingestellt. Wer QR-Codes mit goo.gl-Links gedruckt hatte — auf Flyern, Plakaten, Verpackungen — stand vor einem Problem: Die Links funktionierten zwar noch eine Weile, aber neue konnten nicht mehr erstellt werden. Irgendwann werden auch diese Links sterben.
Das gleiche Risiko besteht bei jedem externen Shortener. Wer die Domain nicht kontrolliert, kontrolliert nicht, ob die Links in einem Jahr noch funktionieren.
Eigene Domain + eigener Service = volle Kontrolle. Selbst wenn der Service umgebaut wird, bleibt die Domain bestehen und Links können migriert werden.
Wie man es besser macht
Wer auf Kurzlinks nicht verzichten kann oder will, sollte folgende Maßnahmen umsetzen:
- Preview-Seite: Vor dem Redirect das Ziel anzeigen. Nutzer können entscheiden, ob sie fortfahren wollen.
- Domain-Allowlist: Nur Weiterleitungen zu vertrauenswürdigen Domains zulassen. Kein Open Redirect.
- Lange Tokens: Mindestens 12 Zeichen Base62. Macht Enumeration praktisch unmöglich.
- 302 + no-store: Korrekte HTTP-Semantik für änderbare Links.
- Kein Tracking: Keine IP-Adressen, keine User-Agents, keine Cookies.
- Eigene Domain: Kontrolle über die Lebensdauer der Links behalten.
Fazit
URL-Shortener sind kein harmloses Komfort-Feature. Sie sind ein potentieller Angriffsvektor, datenschutzrechtlich relevant und ein Vendor-Lock-In-Risiko. Wer sie einsetzt, sollte die Implikationen verstehen und bewusst Entscheidungen treffen.
Für mein Portfolio habe ich deshalb einen eigenen Redirect-Service gebaut, der die genannten Schwierigkeiten berücksichtigt. Der Service ist bewusst minimal gehalten und auf einen klar definierten Anwendungsfall begrenzt.