Co oznacza kropka w domenie pliku cookie?


93

wprowadź opis obrazu tutaj

Jaka jest różnica między local.test.comi .local.test.com? Zrzut ekranu pochodzi z Chrome.




W komentarzu użytkownika 2864740 26 września 2016 o 16:44 - Link nie żyje, najwyraźniej domena erik.io została przekazana innemu użytkownikowi lub rejestratorowi domeny.
— qxotk

Odpowiedzi:


58

local.test.combędzie używany dla domeny, podczas gdy .local.test.combędzie również używany dla subdomen.


11
Więc local.test.comnie będzie dotyczył x.local.test.com, ale .local.test.comdotyczy zarówno do, jak local.test.comi do x.local.test.com?
— ripper234

29
Uważam, że to nieprawda. Pliki cookie są udostępniane wszystkim poddomeny podrzędnej, z kropką lub bez. Możesz myśleć o subdomenach jako o „dziedziczeniu” plików cookie po rodzicach. Dlatego ustawienie pliku cookie na example.com ustawia go na blog.example.com i my.blog.example.com. Ustawienie pliku cookie na blog.example.com ustawia go na this.is.my.blog.example.com i na każdej subdomenie pomiędzy. Ale, podobnie jak w przypadku dziedziczenia, sytuacja odwrotna nie jest prawdą. Ustawienie pliku cookie w witrynie blog.example.com nie powoduje ustawienia go w witrynie example.com.
— geddski

6
To powiedziawszy, MOŻESZ ograniczyć plik cookie tylko do hosta, nie ustawiając w ogóle domeny pliku cookie (lub ustawiając pusty ciąg). To, o dziwo, ustawi plik cookie tylko dla hosta (example.com), a nie dla żadnej z jego subdomen.
— geddski

8
Aby wyjaśnić na podstawie innej odpowiedzi, kropka wykorzystywane , aby coś zmienić, ale teraz nie. Plik cookie zostanie wysłany do dowolnej subdomeny określonej domeny, z początkową kropką lub bez niej. To, co właściwie kontroluje, czy jest przekazywane do subdomen, to to, czy ustawisz domenę w pliku cookie, czy nie. Jeśli w ogóle nie ustawisz domeny, plik cookie zostanie wysłany tylko do dokładnie tej domeny, która go wystawiła. Nigdy nie zostanie wysłany do mniej szczegółowych domen nadrzędnych (np. „Local.test.com” nie zostanie uwzględniony w żądaniach do „test.com”) i będzie wysyłany tylko do pasujących poddomen, jeśli ustawisz wartość domeny.
— Triynko

4
@Triynko, kropka ma znaczenie, gdy próbujesz zaktualizować plik cookie. Nie udało mi się wyodrębnić wszystkich reguł, ale zauważyłem, że wyniki różnią się w zależności od obecności wiodącej kropki lub nie, i nie jest to proste. Sposób działania zależy od przeglądarki i nie jest intuicyjny. Kontrolowanie, czy nazwa pliku cookie ma wiodącą kropkę w przeglądarce, nie jest najprostszym zadaniem programistycznym, jakie kiedykolwiek wykonałem.
— DanAllen,

83

Początkowa kropka oznacza, że ​​plik cookie jest ważny również dla subdomen; niemniej jednak ostatnie specyfikacje HTTP (RFC 6265) zmieniły tę regułę, więc nowoczesne przeglądarki nie powinny przejmować się początkową kropką. Kropka może być potrzebna w starej przeglądarce implementującej przestarzały RFC 2109.

RFC 6265 sekcja 4.1.2.3

Na przykład, jeśli wartością atrybutu Domena jest „example.com”, klient użytkownika umieści plik cookie w nagłówku Cookie podczas wysyłania żądań HTTP do example.com, www.example.com i www.corp.example. com. (Należy zauważyć, że początkowy% x2E („.”), Jeśli występuje, jest ignorowany, mimo że ten znak jest niedozwolony, ale końcowy znak% x2E („.”), Jeśli jest obecny, spowoduje, że program użytkownika zignoruje atrybut. )


1
Dokument RFC pochodzi z kwietnia 2011 r. Zarówno IE8, jak i IE9 zostały pierwotnie wydane przed tą datą i - niestety - są nadal używane. Więc moje przypuszczenie (nie próbowałem) jest takie, że potrzebują kropki wiodącej. Czy ktoś zna oszacowanie, ile przeglądarek na wolności nadal działa na starym RFC?
— BlaM

erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains zaleca użycie wiodącej kropki, aby zapewnić najlepszą zgodność, gdy chcesz uwzględnić subdomeny. Ten wymóg zgodności będzie się tylko zmniejszał. (Niewymagane dla 6255, ale wymagane i z takim samym efektem końcowym jak dla 2109.)
— user2864740

12

Z artykułu Kompletny przewodnik po domenach cookie i dlaczego prefiks www sprawia, że ​​Twoja witryna jest bezpieczniejsza :

Wniosek

Chociaż definicje są nieco inne, możemy uprościć to dla każdej z tych implementacji, ponieważ:

  • Jeśli w pliku cookie nie jest ustawiona żadna domena, plik cookie powinien pasować tylko do dokładnej nazwy hosta żądania. [UWAGA: różni się to od zwracania pliku cookie Set-Cookie z domeną bez kropki!] Brak subdomen, brak dopasowań częściowych. Oznacza to po prostu nieuwzględnianie atrybutu domeny - ustawienie pustego atrybutu domeny jest nieprawidłowe. Niestety, wydaje się , że Internet Explorer traktuje to jako nazwę hosta wraz z dowolnymi subdomenami .

  • Przy ustawianiu domeny w ciasteczku bezpiecznym wyborem jest, aby była poprzedzona kropką, np. .Erik.io. Plik cookie będzie pasował do wszystkich subdomen.

  • Ustawienie domeny cookie bez poprzedzającej kropki, jak erik.io, jest nieprawidłowe w implementacjach RFC 2109 i spowoduje to samo zachowanie, co w przypadku poprzedniej kropki w innych implementacjach. Nie ma sposobu, aby ograniczyć plik cookie do konkretnej, wyraźnie określonej domeny, bez uwzględnienia poddomen.

Inne warte uwagi uwagi:
  • We wszystkich dokumentach RFC określona domena plików cookie musi być zgodna z bieżącą nazwą hosta, zgodnie z normalnym dopasowaniem. Ustawienie pliku cookie dla www.erik.io w odpowiedzi z erik.io jest nieprawidłowe, ponieważ plik cookie z domeną www.erik.io nie pasuje do erik.io, przy czym ta pierwsza jest bardziej szczegółowa.

  • W RFC 6265, wielkość liter domen jest jawnie mniejsza podczas analizowania nagłówka Set-Cookie.


1

Wiodąca kropka w „.local.test.com” to sposób, w jaki chrome przegląda pliki cookie z ustawieniem „Domain = local.test.com” (lub „Domain = .local.test.com”, co jest tym samym).

Definicje Set-Cookie bez „Domena = coś” wyświetla domenę (= host) bez początkowej kropki.

Tak więc wiodąca kropka w chrome nie odzwierciedla tego, czy wiodąca kropka została użyta z serwera, ale czy ten plik cookie miał w definicji „Domena = coś” z serwera. (A gdyby tak było, plik cookie zostanie również wysłany do subdomen).

Tak przynajmniej pokazują moje testy. Chrome powinien ułatwić czytanie, na przykład wyświetlić dokładny ciąg, który zdefiniował plik cookie i kiedy został odebrany.

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.