Çerez alanındaki nokta öneki ne anlama geliyor?


Yanıtlar:


58

local.test.cometki alanı .local.test.comiçin kullanılırken, alt etki alanları için de kullanılacaktır.


11
Öyleyse local.test.comgeçerli olmayacak x.local.test.com, ancak .local.test.comhem için hem de geçerli local.test.comolacak x.local.test.commı?
ripper234

29
Bunun yanlış olduğuna inanıyorum. Çerezler, noktalı veya noktasız tüm alt alan adlarıyla paylaşılır. Alt etki alanlarını, çerezleri üstlerinden "devralan" olarak düşünebilirsiniz. Yani example.com'da bir çerez ayarlamak, onu blog.example.com ve my.blog.example.com'da ayarlar. Blog.example.com'da bir çerez ayarlamak, bunu this.is.my.blog.example.com ve aradaki her alt alan adında ayarlar. Ancak kalıtım gibi bunun tersi de doğru değildir. Blog.example.com'da bir çerez ayarlamak, onu example.com'da ayarlamaz.
geddski

6
Bununla birlikte, çerezin etki alanını hiç ayarlamayarak (veya boş dizeye ayarlayarak) çerezi yalnızca ana bilgisayarla sınırlayabilirsiniz. Bu, garip bir şekilde, çerezi alt alanlarından herhangi biri için değil, yalnızca ana bilgisayar (example.com) için ayarlayacaktır.
geddski

8
Başka bir yanıta göre netleştirmek için, nokta kullanılan bir fark yaratmak için, ama şimdi öyle değil. Çerez, belirtilen alanın herhangi bir alt alanına, baştaki nokta ile veya nokta olmadan gönderilecektir. O alt etki alanları geçirilen olmadığını aslında ne denetimleri olup olmadığını çerezden veya olmasın bir etki alanını ayarlamak. Hiçbir etki alanı ayarlamazsanız, çerez yalnızca onu veren etki alanına gönderilir. Asla daha az spesifik üst etki alanlarına gönderilmez (örn. "Local.test.com", "test.com" isteklerine dahil edilmeyecektir) ve yalnızca bir etki alanı değeri ayarlarsanız eşleşen alt etki alanlarına gönderilecektir.
Triynko

4
@Triynko, nokta bir çerezi güncellemeye çalışırken fark yaratır. Tüm kuralları ayırmayı başaramadım, ancak sonuçların baştaki noktanın varlığına göre değişip değişmediğini ve doğrudan olmadığını gördüm. Bunun nasıl çalıştığı tarayıcıya göre değişir ve tamamen sezgisel değildir. Bir çerez adının tarayıcıda önde gelen bir noktaya sahip olup olmadığını kontrol etmek, şimdiye kadar yaptığım en basit programlama görevi değil.
DanAllen

83

Baştaki nokta, çerezin alt alanlar için de geçerli olduğu anlamına gelir; yine de son HTTP spesifikasyonları (RFC 6265) bu kuralı değiştirdi, bu nedenle modern tarayıcılar baştaki noktayı önemsememelidir. Kullanımdan kaldırılan RFC 2109'u uygulayan eski tarayıcı nokta gerekli olabilir.

RFC 6265 bölüm 4.1.2.3

Örneğin, Domain özniteliğinin değeri "example.com" ise, kullanıcı aracısı, example.com, www.example.com ve www.corp.example'a HTTP isteklerinde bulunurken Cookie başlığına çerezi dahil edecektir. com.tr. (Varsa, baştaki bir% x2E ("."), Bu karaktere izin verilmese bile yok sayılır, ancak sondaki% x2E (".") Varsa, kullanıcı aracısının özniteliği yok saymasına neden olur. )


1
RFC, Nisan 2011 tarihli. Hem IE8 hem de IE9 başlangıçta bu tarihten önce piyasaya sürüldü ve ne yazık ki hala kullanılıyor. Bu yüzden en iyi tahminim (denemedim) baştaki noktaya ihtiyaç duymaları. Vahşi doğada kaç tarayıcının hala eski RFC üzerinde çalıştığına dair bir tahmin bilen var mı?
BlaM

erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains , alt alan adlarını dahil etmek istediğinizde en iyi uyumluluk için baştaki bir noktanın kullanılmasını önerir. Bu uyumluluk gereksinimi yalnızca azalmaya devam edecek. (6255 için gerekli değildir, ancak zorunludur ve 2109 ile aynı sonuca sahiptir.)
user2864740

12

Makaleden Çerez alan adlarına ilişkin kesin kılavuz ve bir www öneki web sitenizi neden daha güvenli hale getirir :

Sonuç

Tanımlar biraz farklı olsa da , bu uygulamalardan herhangi biri için aşağıdaki gibi basitleştirebiliriz :

  • Hiçbir etki alanı çerezine ayarlandığında, çerez gereken sadece istek tam ana bilgisayar adını eşleşecek. [NOT: Bu, noktasız bir etki alanına sahip bir Set-Cookie döndürmekten farklıdır!] Alt etki alanı yok, kısmi eşleşme yok. Bu, yalnızca etki alanı özniteliğinin dahil edilmediği anlamına gelir - boş bir etki alanı özniteliği ayarlamak geçerli değildir. Ne yazık ki, Internet Explorer bunu herhangi bir alt etki alanıyla birlikte ana bilgisayar adı olarak ele alıyor gibi görünüyor .

  • Çerezde bir etki alanı ayarlarken, güvenli seçim, .erik.io gibi bir noktadan önce gelmesidir. Çerez, tüm alt alan adlarıyla eşleşecektir.

  • Erik.io gibi bir tanımlama bilgisi etki alanının öncül noktası olmadan ayarlanması, RFC 2109 uygulamalarında geçersizdir ve diğer uygulamalarda önceki nokta ile aynı davranışı üretecektir. Alt alanlar dahil edilmeden bir çerezi belirli bir açıkça belirlenmiş alanla sınırlandırmanın bir yolu yoktur.

Diğer değerli gözlemler:
  • Tüm RFC'lerde, belirli bir tanımlama bilgisi etki alanı, normal eşleşme başına geçerli ana bilgisayar adıyla eşleşmelidir. Erik.io'dan gelen bir yanıtta www.erik.io için bir çerez ayarlamak geçerli değildir, çünkü www.erik.io etki alanına sahip bir çerez erik.io ile eşleşmez, eskisi daha spesifiktir.

  • RFC 6265'te, Set-Cookie üstbilgisi ayrıştırılırken etki alanları açık bir şekilde daha küçük harflerle gösterilir.


1

".Local.test.com" da baştaki nokta, Chrome'un "Etki Alanı = local.test.com" kümesiyle (veya "Etki Alanı = .local.test.com" aynı olan) çerezleri nasıl görüntülediğidir.

"Etki alanı = bir şey" içermeyen Set-Cookie tanımları, etki alanını (= ana bilgisayar) başında nokta olmadan görüntüler.

Dolayısıyla, kromdaki baştaki nokta, sunucudan baştaki bir noktanın kullanılıp kullanılmadığını değil, bu tanımlama bilgisinin sunucudan gelen tanımında "Etki Alanı = bir şey" olup olmadığını yansıtır. (Ve eğer varsa, tanımlama bilgisi alt alan adlarına da gönderilecektir).

En azından testlerim bunu gösteriyor. Chrome bunu okumayı kolaylaştırmalıdır, örneğin, çerezi tanımlayan dizeyi ve ne zaman alındığını tam olarak görüntülemelidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.