Wie funktioniert die Cookie-Flagge "Sicher"?

101

Ich weiß, dass ein Cookie mit secure Flag nicht über eine unverschlüsselte Verbindung gesendet wird. Ich frage mich, wie das im Detail funktioniert.

Wer bestimmt, ob der Cookie gesendet wird oder nicht?

ted
quelle

Antworten:

91

Der Client legt dies nur für verschlüsselte Verbindungen fest und dies ist in RFC 6265 definiert :

Das Secure-Attribut beschränkt den Umfang des Cookies auf "sichere" Kanäle (wobei "sicher" vom Benutzeragenten definiert wird). Wenn ein Cookie das Attribut "Sicher" hat, nimmt der Benutzeragent das Cookie nur dann in eine HTTP-Anforderung auf, wenn die Anforderung über einen sicheren Kanal übertragen wird (normalerweise HTTP über TLS (Transport Layer Security) [RFC2818]).

Obwohl das Attribut "Sicher" zum Schutz von Cookies vor aktiven Netzwerkangreifern nützlich erscheint, schützt es nur die Vertraulichkeit des Cookies. Ein aktiver Netzwerkangreifer kann sichere Cookies von einem unsicheren Kanal überschreiben und so deren Integrität beeinträchtigen (weitere Informationen finden Sie in Abschnitt 8.6).

Cratylus
quelle
4
Falls die Clientseite noch kein Cookie hat und diese von der Serverseite aus gesendet werden sollte (z. B. Anmelden), entscheidet sich die Serverseite dafür, das Cookie als Antwort aufzunehmen?
Ted
2
Server setzt Cookies zunächst über "Set-Cookie-Header"
Ivan
49

Nur ein weiteres Wort zu diesem Thema:

Auslassen, secureweil Ihre Website example.comvollständig https ist, reicht nicht aus.

Wenn Ihr Benutzer explizit erreicht http://example.com, wird er weitergeleitet, https://example.comaber das ist bereits zu spät. Die erste Anfrage enthielt den Cookie.

Alain Tiemblo
quelle
6
Ich weiß, dass dies alt ist, aber die HSTS-Vorlast hilft dieser Situation, indem verhindert wird, dass dieses Problem häufig auftritt. Es ist immer noch nicht 100% fix, aber es ist nur eine andere Sache zu berücksichtigen, wenn Sie wirklich sichere Cookies vermeiden möchten.
Herr MonoChrome
5
@ Mr.MonoChrome Warum sollten Sie sichere Cookies vermeiden?
MEMark
@ Mr.MonoChrome Obwohl einige ältere oder niedrigere Browser, glaube ich, nicht einmal HSTS
oldboy unterstützen
1
Guter Punkt. Für .NET-Anwendungen ist es besser, die Umleitung in IIS (oder web.config) durchzuführen, als programmgesteuert (zum Beispiel globals.asax)
Piris
Wenn Sie also nicht von http nach https umleiten und nur auf https dienen würden, würden Sie das nicht brauchen secure?
Bremsen