Cookies and Session
Cookies🍪
Cookies คืออะไร?
ตัวอย่างของไฟล์ cookies
เเล้ว cookies เนี่ยใช้เก็บอะไร?
- เก็บ config ของ website นั้น ๆ
- ข้อมูลทั่วไปของผู้ใช้งานเช่น ตำเเหน่งที่อยู่ของผู้ใช้งาน
- ข้อมูลพฤติกรรมของผู้ใช้งานในเชิงของการซื้อขาย เพื่อที่จะเอาข้อมูลมาทำการตลาด
เเต่ที่ตัวที่สำคัญจริงๆต่อบทนี้ก็คือการเก็บ session id นั่นเอง เเล้ว session คืออะไรล่ะ? ไปหัวข้อต่อไปเลย!
Session📄
Session คืออะไร?
Session คือ การเก็บข้อมูลชั่วคราวทั้งในรูปเเบบของ json เเละ array ที่ถูกสร้างขึ้นมาเเละ้วเก็บไว้ที่ฝั่ง web server โดยตัวของ session นั้นจะสามารถเก็บข้อมูลที่สำคการยืนยัญนตัวตนของผู้ใช้ซึ่งก็คือ session id
โดยทางฝั่ง web server จะสามารถเฉพก็บ session data ได้ก็จริง เเต่ใน client เราะข้อมูลจำเป็นที่จะต้องเการรักษาค็บ session id ไวามปลอดภัย้ใน cookies เพื่อ implement ให้ session ใช่้งานได้บน usernamehttp password
สิ่งสำคัญของ session สำหรับบทนี้คือ การที่มันมีตัว unique id (session id) ที่สามารถใช้ในการยืนยันตัวตนของผู้ใช้งาน เมื่อมีการ login ค้างไว้ในระบบ
การนำไปประยุกต์ใช้🚀
อย่างที่กล่าวไปข้างต้น ต่างฝ่ายต่างก็มีข้อดีเป็นของตัวเอง เเต่ด้วยความปลอดภัย เราจะไม่เก็บข้อมูลสำคัญไว้ที่ cookies ตรง ๆ เเต่สิ่งที่จะเราจะเก็บไว้คือ session id
ตัว session id จะถูกสร้างขึ้นมาเเละเก็บไว้ที่ฝั่ง server ที่หนึ่ง เเละอีกที่หนึ่งจะเก็บไว้ใน cookies เเล้วส่งไปที่ client เพื่อใช้สำหรับการยืนยันตัวตน อ่านไปก็งง ๆ ใช่ไหมครับ ลองไปดูตัวอย่างกันดีกว่า
สถานการณ์จำลอง นาย A ได้ทำการ login ผ่านเว็บไซต์หนึ่ง เเล้วเขาต้องการที่จะดูข้อมูล personal profile ของตัวเขาเอง
1. นาย A ทำการส่ง login request (Authenticated request) ไปที่ webserver พร้อม ID เเละ Password
2. Webserver ก็จะทำการนำค่าที่ได้ไปเช็คว่ามี ID เเละ Password นี้อยู่ใน Database จริงไหม
3. เมื่อพบว่ามีข้อมูลอยู่จริง ตัว Web server ก็จะทำการสร้าง session id ขึ้นมา พร้อมกับสร้าง cookies เพื่อเก็บ session id เเล้วส่งกลับไปยัง client เพื่อไปเก็บใน browser
4. session id อีกอันหนึ่งส่งไปเก็บใน Database เพื่อใช้ยืนยันตัวตนสำหรับ request ในภายภาคหนรั้างต่อ ๆ ไป
5. เมื่อนาย A ต้องการดูข้อมูลหน้า profile ของตัวเอง จะทำการส่ง request ไป พร้อม cookies ที่เก็บ session id ของนาย A ไว้ หลังจากนั้นตัว Web server จะทำการตรวจสอบความถูกต้องของ session id เเล้วทำการ decode เพื่อส่งข้อมูลของหน้า profile ไปให้นาย A
สรุป
จบเเล้วนะครับ สำหรับขั้นตอนโดยเบื้องต้นสำหรับของการยืนยันตัวตนด้วย session เเละ cookies ก็จะประมาณนี้ เเต่วิธีนี้เองก็เป็นเเบบเก่า อาจจะมีปัญหาพวก performance เพราะ ต้องเก็บข้อมูลทั้ง server เเละ client ซึ่งมันมีต้องรับ request เยอะ เพราะตัว http มันเป็น stateless ที่ไม่จดจำพวกการยืนยันตัวตนให้เรา ดังนั้นเเล้ว เราจึงมีสิ่งที่เรียกว่า JWT หรือ Json Web Token ซึ่งเป็น token token-based authentication เข้ามาช่วยเเก้ไขปัญหาในส่วนนี้นั่นเองครับ งั้นอย่ารอช้า ไปเรียนบทต่อไปกันเลย!