Jak działa flaga „Bezpieczne” pliku cookie?


102

Wiem, że plik cookie z secureflagą nie zostanie wysłany niezaszyfrowanym połączeniem. Zastanawiam się, jak to działa dogłębnie.

Kto jest odpowiedzialny za określenie, czy plik cookie zostanie wysłany, czy nie?

Odpowiedzi:


92

Klient ustawia to tylko dla połączeń szyfrowanych i jest to zdefiniowane w RFC 6265 :

Atrybut Secure ogranicza zakres pliku cookie do „bezpiecznych” kanałów (gdzie „bezpieczny” jest definiowany przez klienta użytkownika). Gdy plik cookie ma atrybut Secure, agent użytkownika umieści plik cookie w żądaniu HTTP tylko wtedy, gdy żądanie jest przesyłane przez bezpieczny kanał (zwykle HTTP over Transport Layer Security (TLS) [RFC2818]).

Chociaż pozornie przydatny do ochrony plików cookie przed aktywnymi atakami sieciowymi, atrybut Secure chroni tylko poufność pliku cookie. Aktywny napastnik sieciowy może nadpisać Bezpieczne pliki cookie z niezabezpieczonego kanału, zakłócając ich integralność (więcej informacji znajduje się w sekcji 8.6).


4
w przypadku, gdy strona klienta nie ma jeszcze plików cookie i powinny one być wysyłane po stronie serwera (np. logowanie), czy strona serwera zdecyduje się dołączyć plik cookie w odpowiedzi?
ted

3
Serwer początkowo ustawia pliki cookie za pomocą opcji „Set-Cookie headers”
Ivan

49

Jeszcze tylko słowo na ten temat:

Pomijanie, secureponieważ Twoja witryna example.comjest w pełni https, nie wystarczy.

Jeśli twój użytkownik wyraźnie dociera do niego http://example.com, zostanie przekierowany, https://example.comale to już za późno; pierwsze żądanie zawierało plik cookie.


6
Wiem, że to jest stare, ale wstępne ładowanie HSTS pomaga w tej sytuacji, zapobiegając częstemu występowaniu tego problemu. To wciąż nie jest poprawka w 100%, ale jest to kolejna rzecz do rozważenia, jeśli naprawdę chcesz uniknąć bezpiecznego pliku cookie.
Mr. MonoChrome

5
@ Mr.MonoChrome Dlaczego chcesz uniknąć bezpiecznego pliku cookie?
MEMark

@ Mr.MonoChrome, chociaż wydaje mi się, że niektóre starsze lub słabsze przeglądarki nawet nie obsługują HSTS
oldboy

1
Słuszna uwaga. W przypadku aplikacji .NET lepiej jest wykonać przekierowanie w IIS (lub web.config) niż programistycznie (na przykład globals.asax)
piris

Więc jeśli nie przekierowujesz z http na https i obsługujesz tylko na https, nie potrzebujesz secure?
braks
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.