การสร้างโปรแกรมประยุกต์เว็บ > Cookie และ Session
ความปลอดภัยของ Session
session ใช้ในการนำผู้ใช้ผ่านไปยังส่วนต่างของโปแกรมประยุกต์เว็บที่เก็บสารสนเทศอ่อนไหว แต่มักจะถูกโจมตีบ่อย ดังนั้นจึงต้องให้ความสนใจเป็นพิเศษ
ปัจจัยสำคัญของความปลอดภัย session คือ session id เนื่องจากแฮ๊คเกอร์สามารถนำ session id ไปใช้ในการเข้าถึงโปรแกรมประยุกต์เว็บ
การเก็บ Session ID
แฮ๊คเกอร์มีความพยายามเก็บ session id เพื่อเข้าสีระบบ การหยุดมี 2 วิธี
- ตรวจสอบ session.use_only_cookies เป็น on ถ้ากรณีนี้ PHP จะปฏิเสธการทำงานกับ session id ที่มีพื้นฐานมาจาก URL
- เมื่อเริ่มต้น session การหุ้มข้อมูล session ด้วยตัวแปรชี้ถึงการสร้าง session แลการเก็บ หลังจากนั้นสามารถเรียก session_regenerate_id ที่กำหนดให้ session ที่มีอยู่ด้วย session id ใหม่
<?php
session_start()
if (!isset($_SESSION['create']))
{
session_regenerate_id();
$_SESSION['create'] = TRUE;
}
?>
จำกัดความเสียหายจากการผ่อนปรน Session ID
เนื่องจากไม่สามารถประกันว่าแฮ๊คเกอร์ไม่สามารถรับ session id ดังนั้นต้องพยายามทำให้ความยากลำบากให้กับแฮ๊คเกอร์ ในการตรวจสอบ IP address มีอุปสรรคเพราะมีการใช้ IP address สาธารณะร่วมกัน รวมถึง proxy server เป็นสาเหตุให้ IP address เปลี่ยนระหว่างแต่ละคำขอ
แต่ส่วนหัว HTTP User-Agent สะท้อน browser และระบบปฏิบัติการที่สามารถใช้เก็บการเข้าถึงเว็บด้วยเพิ่มข้อความกับข้อความของส่วนหัวนี้ด้วยการแฮช (hash) โดยเข้ารหัสด้วย md5 มีผลให้ User-Agent ไม่สามารถลอกเลียนได้ง่าย แล้วนำข้อมูลเข้ารหัสนี้ส่งไปกับข้อมูล session ให้กับผู้ใช้เพื่อตรวจสอบในครั้งต่อไป
<?php
define('AGENT', 'WEBAPP');
session_start();
if(!isset($_SESSION['user_agent']))
{
$_SESSION['user_agent'] = md5($_SERVER['HTTP_USER_AGENT'].AGENT);
}
else
{
// ถ้าข้อมูล user agent ใน session ไม่ตรงกับการเข้ารหัส
if ($_SESSION['user_agent'] != md5($_SERVER['HTTP_USER_AGENT'].AGENT))
{
// ความปลอดภัยอาจถูกละเมิด ให้เข้าสู่ระบบใหม่
}
}
?>
|