Cybersecurity

Interessenbestimmung

Was jede HTTP-Anfrage über deinen Besucher verrät

Was jede HTTP-Anfrage über deinen Besucher verrät

Stell dir eine einzige Zeile aus einem Server-Logfile vor. Eine IP-Adresse, ein Zeitstempel, die aufgerufene Seite, der Browser, aus dem die Anfrage kam. Freund oder Feind? Aus dieser einen Zeile kannst du es nicht sagen. Aus hundert Zeilen desselben Besuchers schon.

Das ist die Idee hinter dem, was ich Interessenbestimmung nenne. Jeder, der deine Seite aufruft, hinterlässt Spuren. Nicht eine große, verräterische Spur, sondern viele kleine. Einzeln sagt jede fast nichts. Zusammen ergeben sie ein Bild.

Die meisten Betreiber schauen sich zwei Dinge an: den Referrer, also woher jemand kam, und den User-Agent, also welchen Browser er benutzt. Das war es dann meistens. Dabei liegt der interessante Teil woanders.

Weiß, grau, schwarz

Bevor wir zu den Signalen kommen, ein Wort zur Haltung. Besucher sind nicht entweder gut oder böse. Sie sind ein Spektrum. Auf der einen Seite der ehrliche Kunde, der etwas kaufen will. Auf der anderen der Angreifer, der deine Datenbank sucht. Und dazwischen eine große, graue Mitte, in der die meisten stecken.

Die Kunst ist nicht, Gut von Böse zu trennen. Die Kunst ist, die Grauzone einzuschätzen, ohne echte Kunden zu vergraulen. Ein zu scharfer Filter sperrt zahlende Besucher aus. Ein zu laxer lässt jeden durch. Interessenbestimmung ist der Versuch, diese Mitte zu lesen.

Ein Wort zur Grenze, das mir wichtig ist. Es geht hier nicht um Überwachung und nicht um Werbeprofile. Es geht um Sicherheit, um die Frage, ob jemand deinem System schaden will. Diese Unterscheidung ist keine Formalie. Sie ist der Unterschied zwischen legitimer Angriffsabwehr und Datensammelei, und in Europa auch der Unterschied zwischen erlaubt und verboten. Dazu am Ende mehr.

Die Signale, einzeln

Schauen wir uns an, was in einer typischen Anfrage steckt. Jedes dieser Felder ist für sich brauchbar. Und jedes ist für sich wertlos, wenn man es allein betrachtet.

Der User-Agent verrät den Browser, das Betriebssystem, oft die genaue Version. Praktisch. Nur ist er ein reines Textfeld, das jeder fälschen kann. Wenn dort statt eines Browsers eine Programmierbibliothek steht, etwas wie Python oder eine curl-Kennung, dann sitzt am anderen Ende kein Mensch, der surft, sondern ein Skript. Kein Beweis für böse Absicht, aber ein Hinweis.

Die Accept-Header sagen dir, welche Inhalte, Sprachen und Komprimierungsverfahren ein Client verarbeiten kann. Ein echter Browser ist hier gesprächig und genau. Er sagt: Ich nehme am liebsten HTML, dann XML, Bilder gern als WebP, Deutsch vor Englisch. Viele Bots kümmern sich darum nicht. Sie nehmen blind, was kommt, oder lassen das Feld gleich ganz weg.

Die bevorzugte Sprache im Accept-Language-Header ist ein feiner Indikator. Nicht für sich, aber im Zusammenhang. Ein Besucher mit deutschem Namen, chinesischer Spracheinstellung und einer Anfrage aus einem Rechenzentrum ist kein Verbrechen. Aber die drei Dinge zusammen sind ein Muster, das ein Blick wert ist.

Dann die Reihenfolge und Schreibweise der Header. Das übersehen fast alle. Verschiedene Browser schicken ihre Header in verschiedener Reihenfolge. Firefox anders als Chrome, Chrome anders als ein selbstgebautes Skript. Selbst wenn jemand seinen User-Agent auf Firefox fälscht, verrät die Anordnung der übrigen Felder, dass da kein Firefox am Werk ist. Und wenn im Hostnamen plötzlich Großbuchstaben auftauchen, wo ein Browser immer klein schreibt, dann tippt da jemand von Hand oder lässt ein Werkzeug laufen.

Cookies schließlich. Wenn derselbe Besucher dasselbe Cookie von mehreren Maschinen aus verwendet, solltest du hellhörig werden. Das ist ein typisches Zeichen dafür, dass jemand ein Cookie gestohlen hat, um eine fremde Sitzung zu übernehmen.

Warum ein Signal allein lügt

Jetzt der wichtigste Teil. Kein einziges dieser Signale reicht für ein Urteil. Jedes lässt sich fälschen, und jedes hat harmlose Erklärungen.

Ein Entwickler, der deine Seite zum hundertsten Mal aufruft, bewegt sich schnell und zielgerichtet, fast wie ein Bot. Ein Reisender im Hotel-WLAN kommt über eine fremde IP und eine ungewohnte Sprache. Jemand mit Datenschutz-Plugin sieht aus, als würde er etwas verbergen, obwohl er nur seine Ruhe will. Wer aus einem einzelnen Signal ein Urteil fällt, fällt es früher oder später falsch.

Deshalb lässt sich die Absicht eines Besuchers nie aus einer einzelnen Anfrage herleiten. Nie. Wer es doch tut, sperrt Kunden aus und übersieht die klugen Angreifer, die genau wissen, welches eine Feld man beobachtet.

Das Bild entsteht im Zusammenführen

Der Wert liegt in der Summe. Ein einzelner seltsamer Header ist Rauschen. Ein seltsamer Header, dazu eine fehlende Sprachangabe, dazu eine Header-Reihenfolge, die zu keinem echten Browser passt, dazu ein Tempo, das kein Mensch schafft: Das ist ein Bild. Nicht sicher, aber belastbar genug, um genauer hinzuschauen.

Genau so arbeitet moderne Betrugserkennung. Kein Werkzeug entscheidet an einem Merkmal. Sie ziehen viele schwache Signale zusammen und rechnen eine Wahrscheinlichkeit daraus. Was ich 2017 in einem Buch beschrieben habe, steckt heute in jedem ernstzunehmenden Bot-Management. Das Prinzip hat sich nicht verändert. Nur die Zahl der Signale ist gewachsen.

Was 2026 dazugekommen ist

Ein paar Dinge muss ich hier ehrlich einordnen, denn manches von damals trägt heute nicht mehr.

Der Referrer verrät weniger als früher. Browser schicken standardmäßig eine sparsame Referrer-Policy, meist nur noch die Herkunftsdomain ohne den genauen Pfad. Gut für die Privatsphäre, weniger ergiebig für die Analyse.

Der User-Agent wird langsam abgelöst. Chrome friert ihn ein und setzt auf User-Agent Client Hints, die der Server gezielt anfragen muss. Wer sich auf den alten String verlässt, bekommt bald weniger zu sehen.

Dafür ist ein Signal dazugekommen, das schwer zu fälschen ist: der TLS-Fingerabdruck. Schon beim Verschlüsselungs-Handschlag verrät ein Client durch die Art, wie er die Verbindung aufbaut, mit welcher Software er wirklich arbeitet. Bekannt als JA3, veröffentlicht 2017, und der Nachfolger JA4 von 2023. Ein Skript kann seinen User-Agent auf Chrome fälschen, aber der Handschlag darunter passt dann oft nicht dazu. Genau dieser Widerspruch ist Gold wert.

Und dann die Grenze, die ich vorhin angesprochen habe. In Europa darfst du Signale zur Angriffsabwehr auswerten, das erlaubt dir das berechtigte Interesse nach Artikel 6 Absatz 1 lit. f DSGVO. Aber Sicherheit ist der Zweck, nicht Vorwand. Sobald du dieselben Daten nimmst, um Besucher wiederzuerkennen und Profile zu bauen, brauchst du eine Einwilligung, und beim Zugriff auf Cookies oder Fingerprints greift zusätzlich das Telekommunikation-Digitale-Dienste-Datenschutz-Gesetz. Die Technik ist dieselbe. Der Zweck entscheidet, ob sie erlaubt ist. Wer das vermischt, macht aus einer Schutzmaßnahme einen Rechtsverstoß.

Zuhören, nicht urteilen

Interessenbestimmung ist kein Werkzeug, das dir sagt, wer böse ist. Sie ist eine Art zuzuhören. Jede Anfrage erzählt ein Stück einer Geschichte, und erst viele Anfragen ergeben einen Satz, den man verstehen kann.

Der häufigste Fehler kommt danach. Wer einen Angreifer erkannt hat, will ihn sofort loswerden und sperrt seine IP-Adresse. Das fühlt sich richtig an und ist fast immer falsch. Warum, das schauen wir uns im nächsten Teil an.

Weiterführend in dieser Reihe

Zurück: Reverse Engineering als Haltung · Weiter: Warum IP-Adressen sperren dir nichts bringt