ออกจากระบบบนเบราว์เซอร์ ปิด [ซ้ำกัน]

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

ปัญหาคือ ผู้เยี่ยมชมมักไม่ทำอย่างนั้น พวกเขาเพียงแค่ปิดเว็บเบราว์เซอร์

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

ดูเหมือนว่านี่จะเป็นช่องโหว่ด้านความปลอดภัยขนาดใหญ่ :) ในสภาพแวดล้อมที่มีผู้ใช้ร่วมกัน (สำนักงาน อินเทอร์เน็ตคาเฟ่ ฯลฯ)

ฉันจำเป็นต้องรู้วิธี 'ออกจากระบบ' บุคคลนั้นโดยการปิดหน้าต่าง ฉันรู้ว่า

 'session.cookie_lifetime' 

ตัวแปรถูกตั้งค่าเป็น 0

จะต้องมีวิธีแก้ปัญหาบางอย่าง ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.


person Padraig    schedule 14.11.2013    source แหล่งที่มา


คำตอบ (1)


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

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

person Skrivener    schedule 14.11.2013
comment
ฉันค้นพบว่ามันทำงานได้ดีบน IE 8 และ Safari เฉพาะ Chrome และ Firefox เท่านั้นที่ใช้งานไม่ได้ เบราว์เซอร์เหล่านี้กำลังนำคุกกี้เซสชันกลับมาใช้ใหม่หลังจากปิดเบราว์เซอร์ ฉันยังปิด 'เมื่อเริ่มต้นดำเนินการต่อจากจุดที่ฉันค้างไว้' ดังนั้นจึงไม่ใช่ปัญหา PHP - person Padraig; 14.11.2013