การตั้งค่าสถานะคุกกี้“ ปลอดภัย” ทำงานอย่างไร


105

ฉันรู้ว่าคุกกี้ที่มีsecureค่าสถานะจะไม่ถูกส่งผ่านการเชื่อมต่อที่ไม่ได้เข้ารหัส ฉันสงสัยว่ามันทำงานในเชิงลึกอย่างไร

ใครเป็นผู้รับผิดชอบในการพิจารณาว่าคุกกี้จะถูกส่งหรือไม่?

คำตอบ:


94

ไคลเอนต์ตั้งค่านี้สำหรับการเชื่อมต่อที่เข้ารหัสเท่านั้นและกำหนดไว้ในRFC 6265 :

แอตทริบิวต์ Secure จำกัด ขอบเขตของคุกกี้ไว้ที่ช่อง "ปลอดภัย" (โดยตัวแทนผู้ใช้ "ปลอดภัย" กำหนดไว้) เมื่อคุกกี้มีแอตทริบิวต์ที่ปลอดภัยตัวแทนผู้ใช้จะรวมคุกกี้ไว้ในคำขอ HTTP ก็ต่อเมื่อคำขอถูกส่งผ่านช่องทางที่ปลอดภัย (โดยทั่วไปคือ HTTP ผ่าน Transport Layer Security (TLS) [RFC2818])

แม้ว่าจะดูเหมือนมีประโยชน์ในการปกป้องคุกกี้จากผู้โจมตีเครือข่ายที่ใช้งานอยู่ แต่แอตทริบิวต์ Secure จะปกป้องเฉพาะการรักษาความลับของคุกกี้เท่านั้น ผู้โจมตีเครือข่ายที่ใช้งานอยู่สามารถเขียนทับคุกกี้ที่ปลอดภัยจากช่องทางที่ไม่ปลอดภัยซึ่งขัดขวางความสมบูรณ์ของพวกเขา (ดูหัวข้อ 8.6 สำหรับรายละเอียดเพิ่มเติม)


4
ในกรณีที่ฝั่งไคลเอ็นต์ยังไม่มีคุกกี้และควรส่งจากฝั่งเซิร์ฟเวอร์ (เช่นล็อกอิน) ฝั่งเซิร์ฟเวอร์จะเป็นฝ่ายตัดสินใจรวมคุกกี้ในการตอบกลับ?
ted

3
เซิร์ฟเวอร์ตั้งค่าคุกกี้ครั้งแรกผ่าน "ส่วนหัวชุดคุกกี้"
อีวาน

51

อีกคำหนึ่งในหัวข้อ:

การละเว้นsecureเนื่องจากเว็บไซต์ของคุณexample.comเต็ม https นั้นไม่เพียงพอ

หากผู้ใช้ของคุณเข้าถึงอย่างชัดเจนhttp://example.comพวกเขาจะถูกเปลี่ยนเส้นทางไปhttps://example.comแต่ก็สายเกินไปแล้ว คำขอแรกมีคุกกี้


6
ฉันรู้ว่านี่เป็นเรื่องเก่า แต่การโหลดล่วงหน้าของ HSTS ช่วยสถานการณ์นี้โดยการป้องกันไม่ให้ปัญหานี้เกิดขึ้นบ่อยๆ ยังไม่สามารถแก้ไขได้ 100% แต่เป็นอีกสิ่งหนึ่งที่ควรพิจารณาหากคุณต้องการหลีกเลี่ยงคุกกี้ที่ปลอดภัยจริงๆ
Mr. MonoChrome

5
@ Mr.MonoChrome ทำไมคุณถึงต้องการหลีกเลี่ยงคุกกี้ที่ปลอดภัย?
MEMark

@ Mr.MonoChrome แม้ว่าเบราว์เซอร์ที่เก่ากว่าหรือต่ำกว่าบางตัวฉันเชื่อว่าไม่รองรับ HSTS ด้วย
ซ้ำ

1
จุดดี. สำหรับแอปพลิเคชัน. NET ควรทำการเปลี่ยนเส้นทางใน IIS (หรือ web.config) มากกว่าโดยใช้โปรแกรม (เช่น globals.asax)
piris

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