Cookies, Session คืออิหยัง?
เคยสงสัยกันไหมครับว่า session กับ cookies มันต่างกันยังไง มีไว้ทำไม มีข้อดีข้อเสียอย่างไร แล้วทำไมเวลาพูดถึง session กับ cookies ต้องรู้จัก http กับ stateless วันนี้ผมจะให้เราลองมารู้จักกับ cookies และ session ให้มากขึ้น เพื่อที่จะได้รู้ว่าสามารถนำไปใช้ทำอะไรได้ครับ
เริ่มจากมาทำความรู้จัก cookies และ session กันก่อนครับ
• Cookies จัดเก็บข้อมูลในรูปแบบของ text-file ไว้ที่ client site หรือให้เข้าใจง่ายๆ ก็คือ browser เก็บไว้ให้ โดยต้องตั้งค่าวันที่และเวลาเพื่อลบ Cookies เนื่องจาก Cookies จะไม่ถูกลบออกจาก browser นอกจากจะมีคำสั่งลบ นอกจากนี้ cookies มีขนาดที่จำกัดโดยสามารถใส่ข้อมูลลงใน cookies ได้คราวละ 4 Kb. เท่านั้น
• Session ถูกสร้างโดย server และส่งไปยัง client โดยทั้ง 2 ฝั่งต่างเก็บข้อมูลไว้ และรุปแบบข้อมูลใน session สามารถอยู่ในรูปข้อ array หรือ JSON ก็ได้ นอกจากนี้ session จะถูกลบออกเมื่อปิด browser หรือตามเวลาที่กำหนดโดยทั่วไปจะตั้งไว้ที่ 30 นาที
แล้วทำไมต้องมี Cookies กับ Session ล่ะ?
ก็คงต้องพูดถึง http(hyper-text transfer protocal) ก่อนครับ จริงๆแล้ว http เป็น packages ที่ใช้ protocal เป็นช่องทางการสื่อสารครับ นึกภาพเป็นการส่งจดหมายก็ได้ครับ ส่วนคำว่า statelass ก็คือการที่ http มันทำหน้าที่เอา hyper-text ของเราส่งผ่าน protocal ครับ มันจะรู้แค่ต้นทางกับปลายทางเท่านั้น ไม่ได้เก็บข้อมูลหรือระบุได้ว่าใครส่งครับ ดังนั้นก็เลยจำเป็นต้องมี session หรือ cookies ขึ้นมาเพื่อเก็บข้อมูลอย่างเช่น email, username, id, role เป็นต้น ไม่อย่างนั้นคงต้องใส่ username กับ password ทุกครั้ง ที่จะส่งข้อมูลไปยัง server แน่นอนครับ
เลือกใช้อะไรดีล่ะ?
คำตอบคือ… เลือกทั้งคู่ไปเลยก็ยังได้ครับ ต้องเล่าให้ฟังแบบนี้ครับ ว่า cookies เนี่ยพอมันอยู่บนฝั่ง client เราทำอะไรกับมันไม่ได้แล้วครับ ทำได้แค่อ่านข้อมูลกับลบมันทิ้งเท่านั้น อีกอย่างที่ไม่นิยมใช้ cookies เนี้ย เพราะว่ามันไม่ปลอดภัยครับ คือถ้าพอจะรู้จักเราเทคโนโลยีอยู่บ้างใครๆ ก็เข้าไปอ่านข้อมูลที่เก็บไว้ใน cookies ได้ครับ ซึ่งถ้าใช้เป็บข้อมูลสำคัญอย่าง password หรือ userID ก็จบเลยครับ โดนเอา account ไปใช้งานง่ายๆ เลย
ส่วน session ก็ไม่สามารถเก็บข้อมูลบนฝั่ง client ได้ครับ ทำให้ติดตามกิจกรรมต่างๆ ที่ user ใช้งานไม่ได้ครับ แม้ว่าจะปลอดภัยและสะดวกกว่าที่ข้อมูลอยู่ในทั้งฝั่ง client และ server ก็ตาม ดังนั้นเราจึงมักจะเห็นว่าส่วนใหญ่เลือกที่จะใช้งานทั้ง 2 อย่างครับ คือ cookies ทำหน้าที่เก็บข้อมูลที่ไม่สำคัญครับ อย่างเช่น user ใช้งาน ฟังก์ชั่นอะไรบ้าง แล้วให้ session ตามไปอ่านข้อมูลทีหลังครับ ก็จะได้ข้อมูลที่ครบถ้วนครับ
สรุป
ทั้ง Cookies และ Session ใช้ในการจัดเก็บข้อมูลเหมือนกันครับ เนื่องจาก http ไม่ได้เก็บข้อมูลการยืนยันตัวตนของเราไว้ให้ครับ เราจึงต้องมีไฟล์ที่ไว้อ้างอิงในการนำข้อมูลนี้มาใช้งานในอนาคตครับ ทั้ง 2 ตัวอย่างก็มีข้อดีและข้อเสียแตกต่างกันครับ แต่เมื่อนำมาใช้ร่วมกันอย่างถูกวิธีก็จะทำให้เราได้ผลลัพธ์ที่ต้องการครับ
Write a Comment