คุกกี้เซสชัน Firefox


106

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

IE, Opera, Safari และ Chrome ล้วนรองรับพฤติกรรมนี้

อย่างไรก็ตาม firefox (3.0.9 รุ่นล่าสุดที่เหมาะสม) ดูเหมือนจะไม่ปฏิบัติตามกฎนี้จากสิ่งที่ฉันบอกได้ว่าคุกกี้ไม่หมดอายุเมื่อปิดเบราว์เซอร์หรือเมื่อผู้ใช้ออกจากระบบหรือรีสตาร์ทระบบปฏิบัติการ ..

เหตุใด firefox จึงอ้างถึงสิ่งเหล่านี้ว่าคุกกี้เซสชันเมื่อพวกมันมีอายุการใช้งานยาวนานโดยไม่มีกำหนด?

มีใครรู้บ้างว่า Firefox จัดการการหมดอายุของคุกกี้เซสชันอย่างไร


1
ฉันไม่คิดว่าสิ่งนี้ได้รับคำตอบจริงๆ ฉันก็เห็นสิ่งนี้เช่นกัน
bhollis

ขอบคุณ BRH สำหรับการวิจัยของคุณจริงๆแล้วฉันได้เห็นคำตอบของคุณและตั้งใจที่จะตรวจสอบการวิจัยของคุณก่อนที่จะทำเครื่องหมายคำตอบของคุณแทนลืมไปเลย! ขอโทษ
meandmycode

คำตอบ:


117

เห็นได้ชัดจากการออกแบบ ตรวจสอบข้อบกพร่องของ Bugzilla: https://bugzilla.mozilla.org/show_bug.cgi?id=443354

Firefox มีคุณลักษณะที่คุณปิด Firefox และเสนอให้บันทึกแท็บทั้งหมดของคุณจากนั้นคุณจะกู้คืนเบราว์เซอร์และแท็บเหล่านั้นกลับมา เรียกว่าการคืนค่าเซสชัน สิ่งที่ฉันไม่รู้คือมันจะคืนค่าคุกกี้เซสชันทั้งหมดสำหรับหน้าเหล่านั้นด้วย! มันถือว่าคุณไม่เคยปิดเบราว์เซอร์

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

ในการทดสอบนี้ให้ปิดแท็บทั้งหมดในเบราว์เซอร์ของคุณจากนั้นปิดเบราว์เซอร์และรีสตาร์ท ฉันคิดว่าคุกกี้เซสชันสำหรับไซต์ของคุณควรล้างในกรณีนั้น มิฉะนั้นคุณจะต้องปิดการคืนค่าเซสชัน


1
ฉันพบว่าพฤติกรรมนี้ค่อนข้างน่าสงสัยขอบคุณสำหรับการวิจัยของคุณ หากเลือก "บันทึกและออก" หรือ "กู้คืนแท็บและหน้าต่าง" เมื่อปิดเบราว์เซอร์คุกกี้เซสชันทั้งหมดจะยังคงอยู่ วิธีเดียวที่ "ผู้ใช้" จะกำจัดพวกเขาคือปิดแท็บก่อนแล้วจึงปิดเบราว์เซอร์
ทำเครื่องหมาย

คุณเคยพบวิธีแก้ปัญหาหรือไม่? ฉันไม่ต้องการให้ Firefox ขุดเซสชันเก่า ๆ เพราะฉันต้องการรหัสเซสชันในแอปของฉันเพื่อให้ไม่ซ้ำกัน
ArjanP

ขออภัยฉันไม่ทราบวิธีแก้ปัญหา จากมุมมองของแอปของคุณเบราว์เซอร์ไม่เคยปิด
bhollis

6
ฉันสังเกตเห็นผลกระทบบางประการของการตัดสินใจนี้ (IMO ไม่แนะนำ): mrclay.org/index.php/2010/05/02/…
Steve Clay

ฉันโดนพฤติกรรมนี้กัดในวันนี้เช่นกัน ฉันคิดว่ามีบางอย่างผิดปกติกับแอปของฉัน จากนั้นฉันทดสอบ Chrome และเบราว์เซอร์อื่น ๆ แล้วพบว่า Firefox เป็นตัวการ
Dingle


3

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

คุณกำลังดูคุกกี้ในเมนู "ค่ากำหนด"> แท็บ "ความเป็นส่วนตัว"> ปุ่ม "แสดงคุกกี้ ... " หรือไม่

นอกจากนี้คุณได้ลองใช้โปรไฟล์ใหม่แล้วหรือยัง?


แปลกมากฉันค่อนข้างพอใจถ้านี่เป็นเพียงข้อผิดพลาดของทั้งสองระบบที่ฉันทดสอบ .. ฉันดูคุกกี้และพวกมันรอดทุกอย่าง .. และพวกมันถูกจัดประเภทเป็นคุกกี้เซสชันโดย firefox อย่างแน่นอน .. ตัวเลือกเดียวที่ฉันเคยเปลี่ยนใน firefox คือปิดและเปิดจาวาสคริปต์ .. ปลั๊กอินที่ติดตั้งของฉันคือ firebug และแถบเครื่องมือนักพัฒนาเว็บ
meandmycode

นอกจากนี้ยังมีการตั้งค่าโมดูลคุกกี้ที่หลากหลาย แต่ฉันจำไม่ได้ว่ามีฟังก์ชันประเภทนี้ FF3 ได้เปลี่ยนจากไฟล์ข้อความเป็นฐานข้อมูลคุกกี้อาจเป็นไปได้ว่าฐานข้อมูลของคุณทำงานผิดพลาด
benc

2

ฉันไม่เห็นด้วยกับ meandmycode ด้านบน

ข้อมูลจำเพาะ HTTP https://www.ietf.org/rfc/rfc6265.txt พูดถึงสิ่งที่ไคลเอ็นต์ควรทำกับส่วนหัว Set-Cookie ที่หมดอายุ:

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

ส่วนขยายเชิงตรรกะของสิ่งนี้คือวิธีเดียวที่เซิร์ฟเวอร์ต้องการให้เบราว์เซอร์ไม่ดูแลคุกกี้เมื่อออกคือการตั้งค่าไม่มีวันหมดอายุ (เช่นคุกกี้เซสชัน) หากเบราว์เซอร์ไม่ให้เกียรติความหมายนั้นแสดงว่าไม่เคารพการตอบสนองของเซิร์ฟเวอร์

โดยพื้นฐานแล้วตัวแทนผู้ใช้กำลังตัดสินใจที่จะเพิกเฉยต่อคำขอของเซิร์ฟเวอร์และดำเนินการราวกับว่ามีการตั้งค่า Expires


1

นี่เป็นข้อกังวลเล็กน้อยในสภาพแวดล้อมของผู้ใช้ที่ใช้ร่วมกัน หากฉันตั้งค่าคุกกี้การตรวจสอบสิทธิ์ที่กำหนดให้หมดอายุเมื่อสิ้นสุดเซสชัน สิ่งนี้จะยังคงอยู่ใน Firefox หลังจากปิดเบราว์เซอร์และผู้ใช้รายอื่นเริ่มต้น Firefox คุกกี้ถูกกำหนดวันหมดอายุด้วยเหตุผล!


1
เพื่อความเป็นธรรมเกี่ยวกับ "คุกกี้ถูกตั้งค่าด้วยวันหมดอายุด้วยเหตุผล" - ในสถานการณ์นี้คุณไม่ได้กำหนดวันหมดอายุดังนั้นเบราว์เซอร์จะเป็นผู้ตัดสินใจว่าคุกกี้นั้นจะอยู่ได้นานเท่าใด
meandmycode

0

ฉันรู้สึกกลัวที่ Mozilla ทิ้งสิ่งนี้ไว้เป็นเวลาหลายปี

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

ไม่ควรเรียกคืนอย่างแน่นอน หน้าใช่ แต่เซสชันที่มีคุกกี้อินิตั้งค่าเป็น '0' ไม่ใช่

ฉันไม่เข้าใจว่าเหตุใดจึงไม่ถูกตั้งค่าสถานะว่าเป็นช่องโหว่ด้านความปลอดภัย แน่นอนว่าฉันสามารถตรวจสอบเพิ่มเติมได้ที่ฝั่งเซิร์ฟเวอร์เพื่อดูว่าควรอนุญาตการเข้าสู่ระบบหรือไม่โดยอิงตามเวลาจากการเข้าสู่ระบบครั้งล่าสุด แต่ไม่ควรจำเป็น

เซสชันไม่ควรคงอยู่ FF กำลังจัดการกับการตั้งค่าการหมดอายุของคุกกี้


-1

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

ฉันทดสอบกับ Google Chrome, IE 9 แล้วและใช้งานได้ดี แต่ Firefox ไม่เต็มใจที่จะฆ่าคุกกี้ "เซสชัน" นี้ (ตามรายงานของ Firebug)

ตกลง. นี่คือสิ่งที่ฉันทำ ฉันเลือกออกจากเมนูหลักของ FireFox และจากนั้นก็ทำได้ดีตามที่คาดไว้ (ไม่รู้ว่าทำไม)

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