0Pricing
PHP Academy · บทเรียน

แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน

ป้องกันการตรึงเซสชันและการยึดเซสชันด้วยการสร้างค่าใหม่และแฟล็กความปลอดภัย

แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

การโจมตีแบบตรึงเซสชัน

ผู้โจมตีหลอกให้ผู้ใช้ใช้ ID เซสชันที่ผู้โจมตีรู้ล่วงหน้า จากนั้นจึงยึดเซสชันหลังจากผู้ใช้เข้าสู่ระบบ

การป้องกันการตรึงเซสชัน: session_regenerate_id()

หลังจากมีการเปลี่ยนแปลงสิทธิ์ใด ๆ เช่น การเข้าสู่ระบบหรือการเปลี่ยนบทบาท ให้สร้าง ID เซสชันใหม่โดยคงข้อมูลเซสชันเดิมไว้

<?php
session_start();
// After successful login:
session_regenerate_id(true); // true = delete old session file
$_SESSION["user_id"] = $userId;

การยึดเซสชัน

ผู้โจมตีขโมยรหัสเซสชันผ่านการดักจับข้อมูลบนเครือข่าย, XSS หรือการรั่วไหลของบันทึกการทำงาน ป้องกันด้วย HTTPS, คุกกี้ HttpOnly และการสร้างลายนิ้วมืออุปกรณ์

session.cookie_httponly

ป้องกันไม่ให้ JavaScript อ่านคุกกี้เซสชัน ซึ่งช่วยหยุดการขโมยเซสชันส่วนใหญ่ที่อาศัย XSS

<?php
ini_set("session.cookie_httponly", 1);
session_start();

session.cookie_secure

กำหนดให้คุกกี้เซสชันเป็น Secure เพื่อให้ส่งผ่าน HTTPS เท่านั้น

<?php
ini_set("session.cookie_secure", 1);
session_start();

session.cookie_samesite

ตั้งค่า SameSite เป็น Strict หรือ Lax เพื่อป้องกันการโจมตี CSRF ที่ใช้คุกกี้เซสชัน

<?php
ini_set("session.cookie_samesite", "Strict");
session_start();

การผูกกับตัวแทนผู้ใช้

จัดเก็บ User-Agent ไว้ในเซสชันเมื่อเข้าสู่ระบบ และตรวจสอบทุกคำขอเพื่อค้นหาการยึดเซสชัน

<?php
if (!isset($_SESSION["ua"])) {
    $_SESSION["ua"] = $_SERVER["HTTP_USER_AGENT"];
} elseif ($_SESSION["ua"] !== $_SERVER["HTTP_USER_AGENT"]) {
    session_destroy();
    die("Session invalid");
}

เซสชันหมดเวลา

ใช้การหมดเวลาตามกิจกรรม เพื่อออกจากระบบของผู้ใช้ที่ไม่ได้ใช้งานโดยอัตโนมัติ

<?php
$timeout = 1800;
if (isset($_SESSION["last_active"]) &&
    time() - $_SESSION["last_active"] > $timeout) {
    session_destroy();
    header("Location: /login");
    exit;
}
$_SESSION["last_active"] = time();

session.use_strict_mode

เปิดใช้โหมดเข้มงวด เพื่อให้เซิร์ฟเวอร์ปฏิเสธรหัสเซสชันที่ไม่รู้จัก ซึ่งช่วยป้องกันการตรึงเซสชันผ่านการแทรกใน URL

<?php
ini_set("session.use_strict_mode", 1);
session_start();

ตัวจัดการเซสชันแบบกำหนดเอง

การจัดเก็บเซสชันใน Redis หรือฐานข้อมูลช่วยให้คุณยกเลิกเซสชันทั้งหมดของผู้ใช้จากศูนย์กลาง และตรวจสอบเซสชันที่กำลังใช้งานอยู่ได้

การสร้างใหม่เป็นระยะ

แม้ในเซสชันที่ผ่านการยืนยันตัวตนและใช้งานเป็นเวลานาน ให้สร้างรหัสเซสชันใหม่ทุก 15–30 นาที เพื่อลดความเสี่ยงจากการขโมยโทเค็น

สรุป

ควรทำสิ่งต่อไปนี้เสมอ: ใช้ HTTPS ตั้งค่าแฟล็ก HttpOnly+Secure+SameSite เรียกใช้ session_regenerate_id(true) หลังเข้าสู่ระบบ ใช้การหมดเวลาขณะไม่มีการใช้งาน และเปิดใช้โหมดเข้มงวด

ตรวจสอบอย่างรวดเร็ว

session_regenerate_id(true) ทำหน้าที่อะไร

คำถามที่พบบ่อย

บทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน”

ป้องกันการตรึงเซสชันและการยึดเซสชันด้วยการสร้างค่าใหม่และแฟล็กความปลอดภัย คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การเริ่มต้นและใช้งานเซสชัน
  2. แนวทางปฏิบัติที่ดีด้านความปลอดภัยของเซสชัน
  3. การตั้งค่าและอ่านคุกกี้
  4. ความปลอดภัยของคุกกี้: แฟล็ก HttpOnly และ Secure
← กลับไปที่ PHP Academy