คำนำหน้าจุดในโดเมนคุกกี้หมายถึงอะไร


93

ป้อนคำอธิบายภาพที่นี่

อะไรคือความแตกต่างระหว่างlocal.test.comและ.local.test.com? ภาพหน้าจอมาจาก Chrome



1
นี่คือการเขียนที่ดี: erik.io/blog/2014/03/04/definitive-guide-to-cookie-domains
user2864740

ในความคิดเห็นจาก user2864740 26 ก.ย. 59 เวลา 16:44 น. - ลิงก์หมดแล้วดูเหมือนว่าโดเมน erik.io ได้ส่งต่อไปยังผู้ใช้รายอื่นหรือผู้รับจดทะเบียนโดเมน
qxotk

คำตอบ:


58

local.test.comจะถูกใช้สำหรับโดเมนในขณะที่.local.test.comจะใช้สำหรับโดเมนย่อยด้วย


11
ดังนั้นlocal.test.comจะไม่ใช้กับx.local.test.comแต่.local.test.comใช้ทั้งกับlocal.test.comและกับx.local.test.com?
ripper234

29
ฉันเชื่อว่าสิ่งนี้ไม่ถูกต้อง คุกกี้ถูกแชร์กับโดเมนย่อยปลายน้ำใด ๆ และทั้งหมดโดยมีหรือไม่มีจุด คุณสามารถคิดว่าโดเมนย่อยเป็นคุกกี้ "สืบทอด" จากระดับบนสุด ดังนั้นการตั้งค่าคุกกี้บน example.com จึงตั้งค่าบน blog.example.com และ my.blog.example.com การตั้งค่าคุกกี้บน blog.example.com จะตั้งค่าบน this.is.my.blog.example.com และทุกโดเมนย่อยที่อยู่ระหว่าง แต่เช่นเดียวกับการถ่ายทอดทางพันธุกรรมสิ่งที่ตรงกันข้ามไม่เป็นความจริง การตั้งค่าคุกกี้บน blog.example.com ไม่ได้ตั้งค่าบน example.com
geddski

6
ที่กล่าวว่าคุณสามารถ จำกัด คุกกี้เฉพาะโฮสต์โดยไม่ตั้งค่าโดเมนของคุกกี้เลย (หรือตั้งค่าเป็นสตริงว่าง) นั่นเป็นเรื่องแปลกที่จะตั้งค่าคุกกี้สำหรับโฮสต์ (example.com) เท่านั้นไม่ใช่โดเมนย่อยใด ๆ
geddski

8
เพื่อชี้แจงโดยอาศัยคำตอบอื่นจุดเคยสร้างความแตกต่าง แต่ตอนนี้ไม่ได้ คุกกี้จะถูกส่งไปยังโดเมนย่อยของโดเมนที่ระบุโดยมีหรือไม่มีจุดนำหน้า สิ่งที่จริงการควบคุมไม่ว่าจะเป็นการส่งผ่านไปยังโดเมนย่อยคือไม่ว่าคุณตั้งค่าโดเมนคุกกี้หรือไม่ หากคุณไม่ได้ตั้งค่าโดเมนใด ๆ คุกกี้จะถูกส่งไปยังโดเมนเดียวกับที่ออกเท่านั้น จะไม่ถูกส่งไปยังโดเมนหลักที่เจาะจงน้อยกว่า (เช่น "local.test.com" จะไม่รวมอยู่ในคำขอไปยัง "test.com") และจะถูกส่งไปยังโดเมนย่อยที่ตรงกันเท่านั้นหากคุณตั้งค่าโดเมน
Triynko

4
@Triynko จุดนี้สร้างความแตกต่างเมื่อคุณคาดว่าจะอัปเดตคุกกี้ ฉันไม่สามารถแยกกฎทั้งหมดได้ แต่ฉันได้เห็นผลลัพธ์ที่แตกต่างกันไปขึ้นอยู่กับการมีอยู่ของจุดนำหน้าหรือไม่และไม่ตรงไปตรงมา วิธีการทำงานนี้แตกต่างกันไปตามเบราว์เซอร์และไม่ใช่ทั้งหมดที่เข้าใจง่าย การควบคุมว่า cookiename มีจุดนำหน้าบนเบราว์เซอร์หรือไม่นั้นไม่ใช่งานเขียนโปรแกรมที่ง่ายที่สุดที่ฉันเคยทำ
DanAllen

83

จุดนำหน้าหมายความว่าคุกกี้สามารถใช้ได้กับโดเมนย่อยเช่นกัน อย่างไรก็ตามข้อกำหนด HTTP ล่าสุด (RFC 6265) เปลี่ยนกฎนี้ดังนั้นเบราว์เซอร์สมัยใหม่จึงไม่ควรสนใจจุดนำหน้า เบราว์เซอร์รุ่นเก่าอาจต้องการจุดที่ใช้ RFC 2109 ที่เลิกใช้แล้ว

RFC 6265 ส่วน 4.1.2.3

ตัวอย่างเช่นหากค่าของแอตทริบิวต์โดเมนคือ "example.com" ตัวแทนผู้ใช้จะรวมคุกกี้ไว้ในส่วนหัวของคุกกี้เมื่อส่งคำขอ HTTP ไปยัง example.com, www.example.com และ www.corp.example com. (โปรดสังเกตว่าถ้ามี% x2E (".") นำหน้าจะถูกละเว้นแม้ว่าอักขระนั้นจะไม่ได้รับอนุญาต แต่ถ้ามี% x2E (".") ต่อท้ายจะทำให้ตัวแทนผู้ใช้ละเว้นแอตทริบิวต์ )


1
RFC เป็นวันที่เมษายน 2011 ทั้ง IE8 และ IE9 ได้รับการเผยแพร่ครั้งแรกก่อนวันดังกล่าวและ - น่าเศร้า - ยังคงใช้อยู่ ดังนั้นการเดาที่ดีที่สุดของฉัน (ไม่ได้ลอง) คือพวกเขาต้องการจุดนำหน้า มีใครทราบเกี่ยวกับการประมาณว่ามีเบราว์เซอร์กี่ตัวที่ยังคงทำงานอยู่บน RFC รุ่นเก่าหรือไม่?
BlaM

erik.io/blog/2014/03/04/definitive-guide-to-cookie-domainsแนะนำให้ใช้จุดนำหน้าเพื่อให้เข้ากันได้ดีที่สุดเมื่อต้องการรวมโดเมนย่อย ข้อกำหนดความเข้ากันได้นี้จะลดลงเรื่อย ๆ (ไม่จำเป็นสำหรับ 6255 แต่จำเป็นและมีผลลัพธ์สุดท้ายเหมือนกันสำหรับ 2109)
user2864740

12

จากบทความคำแนะนำขั้นสุดท้ายเกี่ยวกับโดเมนคุกกี้และเหตุใดคำนำหน้า www จึงทำให้เว็บไซต์ของคุณปลอดภัยยิ่งขึ้น :

สรุป

แม้ว่าคำจำกัดความจะแตกต่างกันบ้าง แต่เราสามารถทำให้ง่ายขึ้นสำหรับการใช้งานเหล่านี้ได้ดังนี้:

  • เมื่อไม่มีการตั้งค่าโดเมนในคุกกี้คุกกี้ควรตรงกับชื่อโฮสต์ที่ถูกต้องของคำขอเท่านั้น [หมายเหตุ: สิ่งนี้แตกต่างจากการส่งคืน Set-Cookie กับโดเมนที่ไม่มีจุด!] ไม่มีโดเมนย่อยไม่มีการจับคู่บางส่วน ซึ่งหมายความว่าไม่รวมแอตทริบิวต์โดเมน - ไม่สามารถตั้งค่าแอตทริบิวต์โดเมนว่างได้ แต่น่าเสียดายที่Internet Explorer จะปรากฏขึ้นในการรักษานี้เป็นชื่อโฮสต์พร้อมกับโดเมนย่อยใด

  • เมื่อตั้งค่าโดเมนในคุกกี้ตัวเลือกที่ปลอดภัยคือต้องนำหน้าด้วยจุดเช่น. erik.io คุกกี้จะจับคู่กับโดเมนย่อยทั้งหมด

  • การตั้งค่าโดเมนคุกกี้โดยไม่มีจุดนำหน้าเช่น erik.io ไม่ถูกต้องในการใช้งาน RFC 2109 และจะทำให้เกิดลักษณะการทำงานเช่นเดียวกับจุดก่อนหน้าในการใช้งานอื่น ๆ ไม่มีวิธีใดในการ จำกัด คุกกี้เฉพาะโดเมนที่ตั้งไว้อย่างชัดเจนโดยไม่รวมโดเมนย่อย

ข้อสังเกตที่คุ้มค่าอื่น ๆ :
  • ใน RFC ทั้งหมดโดเมนคุกกี้ที่ระบุต้องตรงกับชื่อโฮสต์ปัจจุบันต่อการจับคู่ปกติ การตั้งค่าคุกกี้สำหรับ www.erik.io ในการตอบกลับจาก erik.io นั้นไม่ถูกต้องเนื่องจากคุกกี้ที่มีโดเมน www.erik.io ไม่ตรงกับ erik.io ซึ่งเดิมมีความเฉพาะเจาะจงมากกว่า

  • ใน RFC 6265 โดเมนจะลดลงอย่างชัดเจนเมื่อแยกวิเคราะห์ส่วนหัว Set-Cookie


1

จุดนำหน้าใน ".local.test.com" คือการที่ Chrome ดูคุกกี้ด้วยชุด "Domain = local.test.com" (หรือ "Domain = .local.test.com" ซึ่งเหมือนกัน)

คำจำกัดความ Set-Cookie ที่ไม่มี "Domain = something" ดูโดเมน (= host) โดยไม่มีจุดนำหน้า

ดังนั้นจุดนำหน้าในโครเมี่ยมจึงไม่สะท้อนว่ามีการใช้จุดนำหน้าจากเซิร์ฟเวอร์หรือไม่ แต่คุกกี้นั้นมี "โดเมน = บางอย่าง" ในคำจำกัดความจากเซิร์ฟเวอร์หรือไม่ (และหากมีคุกกี้จะถูกส่งไปยังโดเมนย่อยด้วย)

อย่างน้อยนี่คือสิ่งที่การทดสอบของฉันแสดงให้เห็น Chrome ควรทำให้อ่านง่ายขึ้นเช่นดูสตริงที่กำหนดคุกกี้และเวลาที่ได้รับ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.