มาดูสิ่งนี้กัน:
คุกกี้และเซสชันเป็นทั้งสองวิธีในการรักษาสถานะของแอปพลิเคชันระหว่างคำขอต่างๆที่เบราว์เซอร์สร้างขึ้น ต้องขอบคุณพวกเขาที่ยกตัวอย่างเช่นคุณไม่จำเป็นต้องเข้าสู่ระบบทุกครั้งที่คุณขอเพจบน StackOverflow StackOverflow
คุ้กกี้
คุกกี้เป็นข้อมูลขนาดเล็ก (ความยาวสูงสุด 4KB) ซึ่งเก็บข้อมูลไว้ในคู่คีย์ = ค่า:
name=value
สิ่งเหล่านี้ถูกกำหนดโดยJavaScriptหรือผ่านเซิร์ฟเวอร์โดยใช้ส่วนหัว HTTPส่วนหัว
คุกกี้มีชุดวันที่และเวลาหมดอายุตัวอย่างเช่นการใช้ส่วนหัว HTTP:
Set-Cookie: name2=value2; Expires=Wed, 19 Jun 2021 10:18:14 GMT
ซึ่งจะทำให้เบราว์เซอร์ตั้งชื่อคุกกี้name2
ด้วยค่าvalue2
ซึ่งจะหมดอายุในอีกประมาณ 9 ปี
คุกกี้ถือว่าไม่ปลอดภัยอย่างมากเนื่องจากผู้ใช้สามารถจัดการกับเนื้อหาของตนได้อย่างง่ายดาย นั่นเป็นเหตุผลที่คุณควรตรวจสอบข้อมูลคุกกี้อยู่เสมอข้อมูลคุกกี้ตรวจสอบเสมออย่าถือว่าสิ่งที่คุณได้รับจากคุกกี้จำเป็นต้องเป็นสิ่งที่คุณคาดหวัง
โดยปกติคุกกี้จะใช้เพื่อรักษาสถานะการเข้าสู่ระบบโดยที่ชื่อผู้ใช้และแฮชพิเศษถูกส่งจากเบราว์เซอร์และเซิร์ฟเวอร์จะตรวจสอบกับฐานข้อมูลเพื่ออนุมัติการเข้าถึง
คุกกี้มักใช้ในการสร้างเซสชัน
เซสชัน
เซสชันแตกต่างกันเล็กน้อย ผู้ใช้แต่ละคนได้รับหมายเลขเซสชั่นซึ่งจะถูกส่งกลับไปยังเซิร์ฟเวอร์สำหรับการตรวจสอบทั้งโดยคุกกี้หรือตัวแปร GET
โดยปกติเซสชันจะมีอายุสั้นซึ่งทำให้เหมาะอย่างยิ่งในการบันทึกสถานะชั่วคราวระหว่างแอปพลิเคชัน นอกจากนี้เซสชันจะหมดอายุเมื่อผู้ใช้ปิดเบราว์เซอร์
การประชุมมีการพิจารณาความปลอดภัยมากกว่าคุกกี้เพราะตัวแปรที่ตัวเองจะถูกเก็บไว้บนเซิร์ฟเวอร์ นี่คือวิธีการทำงาน:
- เซิร์ฟเวอร์เปิดเซสชัน (ตั้งค่าคุกกี้ผ่านส่วนหัว HTTP)
- เซิร์ฟเวอร์ตั้งค่าตัวแปรเซสชัน
- หน้าการเปลี่ยนแปลงของลูกค้า
- ลูกค้าส่งคุกกี้ทั้งหมดพร้อมกับรหัสเซสชันจากขั้นตอนที่ 1
- เซิร์ฟเวอร์อ่านรหัสเซสชันจากคุกกี้
- เซิร์ฟเวอร์จับคู่รหัสเซสชันจากรายการในฐานข้อมูล (หรือหน่วยความจำ ฯลฯ )
- เซิร์ฟเวอร์ค้นหาคู่ที่ตรงกันอ่านตัวแปรที่มีอยู่ใน
$_SESSION
superglobal
หาก PHP ไม่พบรายการที่ตรงกันก็จะเริ่มเซสชันใหม่และทำซ้ำขั้นตอนที่ 1-7
คุณสามารถจัดเก็บข้อมูลที่ละเอียดอ่อนในเซสชันได้เนื่องจากข้อมูลนั้นถูกเก็บไว้บนเซิร์ฟเวอร์ แต่โปรดทราบว่ารหัสเซสชันยังสามารถถูกขโมยได้หากผู้ใช้เข้าสู่ระบบผ่าน WiFi ที่ไม่ปลอดภัย (ผู้โจมตีสามารถดมคุกกี้และตั้งค่าเป็นของตัวเองเขาจะไม่เห็นตัวแปรนั้นเอง แต่เซิร์ฟเวอร์จะระบุผู้โจมตีว่าเป็นผู้ใช้
นั่นคือส่วนสำคัญของมัน คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับคู่มือ PHP ในทั้งสองวิชา