Ich habe mich in letzter Zeit viel mit Websicherheit befasst und überlege nun wie man Session-Hijacking verhindern kann.
Meine (und im Netz gefundene) Idee ist folgende:
Sobald der User sich anmeldet wird ein zusätzlicher Schlüssel aus dem UserAgent erstellt und in der Datenbank gespeichert. Nun wird bei jedem Seitenaufruf geprüft ob der (neu generierte) Schlüssel gleich dem gespeicherten ist. Nur wenn das der Fall ist bleibt der User eingeloggt.
Die elementare Schwachstelle die ich bei dem ganzen sehe ist dass der Angreifer der ja sowieso einen Cookiestealer benutzt genauso gut den UserAgent in Erfahrung bringen und diesen dann selber senden kann und somit mit der oben beschriebenen Methode nicht vom wirklichen User unterschieden werden kann.
Daher überlegte ich nun aus der IP und dem UserAgent den Schlüssel zu generieren, allerdings wäre dann immer noch ein Angriff möglich wenn der Besucher einen Proxy benutzt und der Angreifer selbigen nutzt.
Das ganze ist allerdings dann schon recht unwahrscheinlich, denke ich.
Gibt es besseren Methoden Session-Hijacking zu umgehen?
Natürlich abgesehen davon keine XSS Löcher zu lassen.
edit:
Das einzige was mir momentan einfällt wäre ein sich ständig verändernder Zusatz im Schlüssel welcher sich mit jedem Seitenaufruf ändert (Und auch jedes Mal in die DB gespeichert werden müsste)
Dann müsste der SessionStealer bzw. der Angreifer sich vor dem User einloggen. Der User würde daraufhin, aufgrund des geänderten Schlüssels, abgemeldet und müsste sich wieder anmelden woraufhin der Angreifer wieder abgemeldet würde.
Zumindest ein wenig mehr Sicherheit, wenn auch zu einem hohen Performance preis, oder denke ich gerade falsch ?
edit2:
Ein wenig am Text gefeilt.
Ich werde das ganze nun erst einmal mit einem Schlüssel aus UserAgent und Ip umsetzten.
M.f.g.
SleepProgger
Meine (und im Netz gefundene) Idee ist folgende:
Sobald der User sich anmeldet wird ein zusätzlicher Schlüssel aus dem UserAgent erstellt und in der Datenbank gespeichert. Nun wird bei jedem Seitenaufruf geprüft ob der (neu generierte) Schlüssel gleich dem gespeicherten ist. Nur wenn das der Fall ist bleibt der User eingeloggt.
Die elementare Schwachstelle die ich bei dem ganzen sehe ist dass der Angreifer der ja sowieso einen Cookiestealer benutzt genauso gut den UserAgent in Erfahrung bringen und diesen dann selber senden kann und somit mit der oben beschriebenen Methode nicht vom wirklichen User unterschieden werden kann.
Daher überlegte ich nun aus der IP und dem UserAgent den Schlüssel zu generieren, allerdings wäre dann immer noch ein Angriff möglich wenn der Besucher einen Proxy benutzt und der Angreifer selbigen nutzt.
Das ganze ist allerdings dann schon recht unwahrscheinlich, denke ich.
Gibt es besseren Methoden Session-Hijacking zu umgehen?
Natürlich abgesehen davon keine XSS Löcher zu lassen.
edit:
Das einzige was mir momentan einfällt wäre ein sich ständig verändernder Zusatz im Schlüssel welcher sich mit jedem Seitenaufruf ändert (Und auch jedes Mal in die DB gespeichert werden müsste)
Dann müsste der SessionStealer bzw. der Angreifer sich vor dem User einloggen. Der User würde daraufhin, aufgrund des geänderten Schlüssels, abgemeldet und müsste sich wieder anmelden woraufhin der Angreifer wieder abgemeldet würde.
Zumindest ein wenig mehr Sicherheit, wenn auch zu einem hohen Performance preis, oder denke ich gerade falsch ?
edit2:
Ein wenig am Text gefeilt.
Ich werde das ganze nun erst einmal mit einem Schlüssel aus UserAgent und Ip umsetzten.
M.f.g.
SleepProgger
Zuletzt bearbeitet: