ถ้าเราพูดถึงการเก็บข้อมูลผู้ใช้บนเว็บ Session และ Cookie เป็นสองวิธีหลักที่ใช้กันบ่อยมาก แต่หลายคนอาจสงสัยว่า มันต่างกันยังไง? แล้ว ควรใช้ตอนไหน?
บทความนี้จะพาไปทำความเข้าใจ Session กับ Cookie แบบละเอียดสุด ๆ พร้อมตัวอย่างการใช้งาน ที่ถูกต้องและปลอดภัย
1. Session และ Cookie คืออะไร?
คุณสมบัติ | Session | Cookie |
---|---|---|
เก็บข้อมูลไว้ที่ไหน? | ฝั่งเซิร์ฟเวอร์ | ฝั่งเบราว์เซอร์ (Client-side) |
อายุของข้อมูล | หมดอายุเมื่อปิดเบราว์เซอร์ (ถ้าไม่กำหนดเวลา) | กำหนดเวลาหมดอายุได้ |
ข้อมูลปลอดภัยแค่ไหน? | ปลอดภัยกว่าเพราะไม่อยู่ในเครื่องผู้ใช้ | มีโอกาสถูกแก้ไขได้ |
ใช้สำหรับอะไร? | เก็บข้อมูลที่ต้องการให้ปลอดภัย เช่น การล็อกอิน | เก็บค่าต่าง ๆ เพื่อให้ผู้ใช้สะดวกขึ้น เช่น จำการตั้งค่าของเว็บ |
ส่งข้อมูลไปกับ HTTP Request ไหม? | ไม่ | ใช่ (Cookie จะถูกส่งไปกับทุก Request) |
2. วิธีใช้ Session อย่างถูกต้อง
📌 เริ่มใช้งาน Session
ก่อนจะใช้งาน Session เราต้องเรียก session_start(); เสมอ
session_start(); // ต้องใส่เป็นบรรทัดแรกของไฟล์ PHP
📌 วิธีสร้างตัวแปรใน Session
$_SESSION['username'] = 'john_doe';
$_SESSION['role'] = 'admin';
📌 ดึงค่าจาก Session
session_start();
echo $_SESSION['username']; // john_doe
📌 วิธีลบค่า Session
ถ้าต้องการลบตัวแปร Session บางตัว
unset($_SESSION['username']); // ลบตัวแปร username
ถ้าต้องการลบทุกอย่าง (เช่น ตอน Logout)
session_destroy(); // ลบ Session ทั้งหมด
🔥 ข้อควรระวังในการใช้ Session
- ต้องเรียก session_start(); ก่อนเสมอ
- อย่าเก็บข้อมูลที่สำคัญเกินไป เช่น รหัสผ่าน ควรเก็บแค่ ID แล้วไปดึงข้อมูลจาก Database
- อย่าลืมลบ Session ที่ไม่จำเป็นเมื่อผู้ใช้ Logout
3. วิธีใช้ Cookie อย่างถูกต้อง
📌 การสร้าง Cookie
setcookie("user", "john_doe", time() + 3600, "/"); // หมดอายุใน 1 ชั่วโมง
📢 time() + 3600 หมายถึง 1 ชั่วโมง (60 วินาที x 60 นาที)
📌 การอ่านค่า Cookie
if(isset($_COOKIE['user'])) {
echo "Welcome " . $_COOKIE['user'];
}
📌 การลบ Cookie
setcookie("user", "", time() - 3600, "/"); // ตั้งเวลาให้เป็นอดีต
🔥 ข้อควรระวังในการใช้ Cookie
- ข้อมูลใน Cookie ถูกแก้ไขได้ ควรเข้ารหัสก่อนเก็บ
- Cookie ถูกส่งไปกับทุก HTTP Request ทำให้เพิ่มภาระเซิร์ฟเวอร์
- อย่าเก็บข้อมูลสำคัญใน Cookie เช่น รหัสผ่าน
4. ควรใช้ Session หรือ Cookie ตอนไหน?
สถานการณ์ | ควรใช้ |
---|---|
ระบบล็อกอิน | Session (ปลอดภัยกว่า) |
จดจำการตั้งค่าของผู้ใช้ เช่น โหมดมืด | Cookie |
ติดตามการใช้งานเว็บ (Analytics) | Cookie |
เก็บข้อมูลชั่วคราวของผู้ใช้ในระหว่าง Session | Session |
5. เทคนิคเพิ่มความปลอดภัย
🔒 ป้องกัน Session Hijacking
session_regenerate_id(true); // เปลี่ยน Session ID ใหม่ ป้องกันการขโมย
🔒 ตั้งค่า Cookie ให้ปลอดภัย
setcookie("user", "john_doe", time() + 3600, "/", "", true, true);
✅ true, true หมายถึงเปิดใช้งาน Secure (HTTPS เท่านั้น) และ HttpOnly (กัน XSS)
6. สรุป
- Session เหมาะสำหรับเก็บข้อมูลชั่วคราวที่ต้องปลอดภัย เช่น การล็อกอิน
- Cookie เหมาะสำหรับจดจำข้อมูลระยะยาว เช่น การตั้งค่าเว็บ
- ต้อง เข้ารหัสข้อมูล และใช้ HttpOnly / Secure กับ Cookie เพื่อความปลอดภัย
- อย่าลืมล้าง Session และ Cookie ที่ไม่จำเป็นเพื่อป้องกันปัญหาความปลอดภัย
ไม่มีความคิดเห็น:
แสดงความคิดเห็น