2009-04-09 5 views
2

Ich bemerke, dass einige Seiten (wie Google Mail) den Benutzer erlauben, sich über https zu authentifizieren und dann auf http mit nicht sicheren Cookies für die Hauptnutzung der Site zu wechseln.Wie unterstützen Sites sichere (nicht SSL-unterstützte) Sitzungen?

Wie ist es möglich, einen HTTP-Zugang zu einer Sitzung zu haben, aber dies ist trotzdem sicher? Oder ist es nicht sicher und daher bietet Google Mail die Möglichkeit, die gesamte Sitzung mit https zu sichern?

Bitte geben Sie ein Beispiel, wie dies funktioniert und vermeidet Session-Hijacking-Angriffe, während weiterhin Zugriff auf authentifizierten Inhalt über http. Ich möchte in der Lage sein, ein solches Schema zu implementieren, wenn es sicher ist, um zu vermeiden, dass ich aus Gründen der Performance eine ganze Site als https haben muss.

Antwort

2

Wie Thilo sagte, aber ich werde ein wenig weiter :)

Ein Webserver ist staatenlos erklären! Dies ist wirklich das Problem des Authentifizierungsfalls. Sie können sich nicht einfach anmelden und dann sagen "Von nun an ist dieser Benutzer angemeldet" - Sie benötigen eine Möglichkeit, um herauszufinden, welcher Benutzer dieses Mal eine neue Site anfordert.

Eine gängige Methode hierfür ist die Implementierung von Sitzungen. Wenn Sie Ihren Netzwerkverkehr bei der Anmeldung per Paket-Sniff erfassen und dann auf einer Website surfen, bemerken Sie häufig Folgendes:

Anmelden: Sie werden Ihren Benutzernamen und Ihr Passwort an den Server übermitteln. Völlig unverschlüsselt! (SSL/HTTPS wird diese Anforderung verschlüsseln, um Man-in-the-Middle-Angriffe zu vermeiden)

Antwort: Sie erhalten eine zufällig generierte Zeichenfolge mit vielen seltsamen Zeichen. Diese werden normalerweise in einem Cookie gespeichert.

Anforderung einer Site, auf die Sie Zugriff haben sollten: Sie werden die zufällig generierte Zeichenfolge an den Server übertragen. Der Server sucht diese Zeichenfolge und stellt fest, dass sie mit Ihrer Sitzung verknüpft ist. Dadurch kann der Server Sie identifizieren und Ihnen Zugriff auf Ihre Websites gewähren.

.. Jetzt ist HTTP in sich nicht sicher. Das bedeutet, dass Ihr Passwort und Ihr Session-Cookie (der zufällig erzeugte String) vollständig unverschlüsselt übertragen werden. Wenn jemand Zugriff auf Ihren Datenverkehr hat (Trojaner, Router-Hijacking, was auch immer), kann er Ihren Benutzernamen/Ihr Passwort sehen, wenn Sie sich einloggen, wenn Sie nicht HTTPS verwenden. Dies gewährt ihm Zugriff auf Ihre Site, bis Sie Ihr Passwort ändern (es sei denn, er ändert es zuerst: P).In den übrigen Anfragen wird er in der Lage sein, Ihren Sitzungscookie zu erhalten, was bedeutet, dass er Ihre Identität für den Rest dieses Cookie-Lebenszyklus stehlen könnte ('bis Sie sich abmelden oder die Sitzung auf dem Server abläuft).

Wenn Sie sich sicher fühlen möchten, verwenden Sie HTTPS. Realistisch gesehen ist es jedoch viel einfacher, einen Keylogger in Ihren Computer zu integrieren, als Ihren gesamten Traffic zu lesen :)

(Oder wie andere darauf hingewiesen haben, verwenden Sie Cross-Site-Scripting zum Lesen Ihres Session-Cookies)

+0

> "Realistischerweise ist es jedoch viel einfacher, einen Keylogger in Ihren Computer zu integrieren, als Ihren gesamten Datenverkehr zu lesen." Nun, mit drahtlosen Netzwerken scheint es sehr machbar (denke Konferenzen oder Cafés). – Thilo

+0

Wahr, dass .. Vor allem an öffentlichen Hotspots – cwap

+0

@Meeh: Korrektur in vierten Absatz: SSL wird nicht Hash, wird es verschlüsseln. Der Unterschied liegt hauptsächlich darin, dass SSL auf Grund des Leakings des Entschlüsselungsschlüssels anfällig für eine andere Reihe von Angriffen ist, während ein Hash nur dann reversibel ist, wenn der Hash-Algorithmus als schwach erkannt wird. –

2

Es ist nur sicher, sofern das Passwort nicht im Klartext übertragen wird. Es ist möglich (und wurde getan), den GMail-Sitzungscookie im HTTP-Modus abzufangen und zu missbrauchen.

Um Session-Hijacking zu vermeiden, müssen Sie im HTTPS-Modus bleiben (was GMail jetzt bietet, denke ich).

+0

Nun, es wird bestimmte Arten von Session-Hijacking abschwächen, aber es ist keine Wunderwaffe. –

+0

HTTPS: Keine Wunderwaffe, aber ein notwendiger erster Schritt? – Thilo

1

Dies ist nur ein kleines bisschen sicherer als einfaches HTTP - der Login-Name/Passwort geht nicht über den Draht im Klartext. Abgesehen davon funktioniert es genau wie eine normale HTTP-Cookie-basierte Sitzung (weil das ist, was es ist); Daher gelten alle Session-Hijacking-Probleme.

1

Es ist nicht wirklich möglich und nicht sicher. Deshalb haben wir "sichere Cookies" bekommen. Obwohl es gegen passive Sniffing-Angriffe gut ist, weil Benutzername/Passwort nicht angezeigt werden, ist Session-Hijacking dennoch möglich.

Überprüfen Sie auch diese SSL Implementation Security FAQ Papier.