Session-Hijacking verhindern

Wie kann verhindert werden, dass mehrere Clients dieselbe Sitzungs-ID verwenden? Ich frage dies, weil ich eine zusätzliche Sicherheitsebene hinzufügen möchte, um Sitzungsentführungen auf meiner Website zu verhindern. Wenn ein Hacker die Sitzungs-ID eines anderen Benutzers herausfindet und Anforderungen mit dieser SID stellt, wie kann ich feststellen, dass sich verschiedene Clients eine einzelne SID auf dem Server teilen und den Entführungsversuch dann ablehnen?

BEARBEITEN

Ich habe die Antwort von Gumbo nach sorgfältiger Überlegung akzeptiert, weil ich zu der Erkenntnis gekommen bin, dass das, wonach ich bitte, aufgrund der Beschränkungen von a unmöglich istzustandsloses HTTP-Protokoll. Ich habe vergessen, was das vielleicht grundlegendste Prinzip von HTTP ist, und jetzt, wo ich über diese Frage nachdenke, scheint es ein bisschen trivial.

Lassen Sie mich näher erläutern, was ich meine:

Nachdem sich Benutzer A auf example.com angemeldet hat, erhält er eine zufällige Sitzungs-ID. Der Einfachheit halber sollte diese 'abc123' lauten. Diese Sitzungs-ID wird als Cookie auf der Clientseite gespeichert und mit einer serverseitigen Sitzung überprüft, um sicherzustellen, dass der angemeldete Benutzer angemeldet bleibt, wenn er von einer Webseite auf eine andere wechselt. Dieses Cookie müsste natürlich nicht existieren, wenn HTTP nicht zustandslos wäre. Wenn Benutzer B die SID von Benutzer A stiehlt und auf seinem Computer ein Cookie mit dem Wert 'abc123' erstellt, hätte er aus diesem Grund die Sitzung von Benutzer A erfolgreich entführt, aber es gibt einfach keine Möglichkeit für den Server, die SID von Benutzer B zu erkennen Die Anforderung unterscheidet sich von den Anforderungen von Benutzer A, sodass der Server keinen Grund hat, Anforderungen abzulehnen. Selbst wenn wir die Sitzungen auflisten, die bereits auf dem Server aktiv waren, und versuchen, festzustellen, ob jemand auf eine Sitzung zugreift, die bereits aktiv ist, können wir feststellen, dass ein anderer Benutzer unrechtmäßig auf die Sitzung zugreift und nicht derselbe Benutzer der bereits mit einer Sitzungs-ID angemeldet ist, aber einfach versucht, eine andere Anfrage damit zu stellen (dh zu einer anderen Webseite zu navigieren). Wir können nicht. User Agent überprüfen? Kann gefälscht werden - aber trotzdem gut als Tiefenverteidigungsmaßnahme. IP Adresse? Kann sich aus legitimen Gründen ändern - aber anstatt überhaupt nicht nach der IP-Adresse zu suchen, schlage ich vor, so etwas wie die ersten beiden Oktette der IP zu überprüfen, selbst wenn ein Benutzer in einem Datentarifnetzwerk aus absolut legitimen Gründen eine sich ständig ändernde IP hat würde normalerweise nur die letzten zwei Oktette ihrer IP ändern.

Zusammenfassend ist es das zustandslose HTTP, das uns verurteilt, niemals in der Lage zu sein, unsere Websites vollständig vor Sitzungsentführungen zu schützen, aber bewährte Methoden (wie die von Gumbo bereitgestellten) werden ausreichen, um eine gute Mehrheit von Sitzungsangriffen zu verhindern. Der Versuch, Sessions vor Hijacking zu schützen, indem mehrere Anfragen derselben SID abgelehnt werden, ist daher einfach lächerlich und würde den gesamten Zweck von Sessions zunichte machen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage