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.

zrywak234
źródło
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.

JoRouss
źródło
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. )

Timido
źródło
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.

user2864740
źródło
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.

Kjetil S.
źródło