การป้องการ session hijacking และ php session security
หน้าแรก PHP MySQL เกร็ดความรู้ การป้องการ session hijacking และ php session security
ส่วนที่ 1
1. เมื่อสั่ง session start แล้ว ตัว session มันจะลบตัวเองเมื่อไหร่ครับ หากไม่ได้สั่งให้มันหยุด
- session กำหนดเวลาได้ที่ php.ini (เดา) แต่ไม่มีคนสนใจหรอกครับ (ทำไม ?) ลองอ่านต่อครับ
2. session แต่ละตัวที่สร้างขึ้นมาจะอ้างอิงอยู่กับ ไอพี เครื่อง หรือเวบบราวเซอร์ครับ
- อ้างอยุ่กับ Session ครับ เมื่อท่านเปิดเว็บขึ้นมา ทาง server ก็จะบันทึกการใช้งานขณะนั้นไว้ ถ้าท่านเปิด browser มาอีกตัวก็คนละ session แล้วครับ
3. การใช้ฟังก์ชั่น session ของ php เหมาะกับการทำ login script ที่อนุญาตให้ล้อกอินได้ทีละเครื่องเดียว มากแค่ไหนครับ มีช่องโหว่อะไรหรือเปล่า
- ปกติช่องโหว่มันไม่มีหรอกครับ เราทำให้มีเอง :wanwan004: แล้วก็ session นี้ปลอดภัยที่สุดแล้วครับถ้าใช้งานธรรมดานะ
4. มีฟีเจอร์ หรือการออกแบบอื่นๆ ที่สามารถช่วยเรื่องการจำกัด login ให้ได้ทีละเครื่องเดียว วิธีไหนที่ดีกว่า session หรือเปล่าครับ (ดีกว่า=ปลอดภัยกว่า หรือ ทำง่ายกว่า)
- ใช้หลายๆ อย่างสิครับ ถ้า "เครื่องเดียว" ก็หมายถึงหลาย session ได้ งั้นเราก็ควรใช้ cookie กับ แต่เราก็ต้องเช็คดีๆ เพราะ cookie มันเปลี่ยนแปลงได้!
ส่วนที่ 2
การป้องการ session hijacking
1. ใช้ SSL
2. เปลี่ยน session id ใหม่เมื่อมีการ login ทุกครั้ง
3. กำหนดค่า session timeout ไว้
4. ไม่ใช้ register_global
5. ไม่ส่งข้อมูลอย่างเช่น username บันทึกใน cookie
6. ตรวจสอบ $_SERVER['HTTP_USER_AGENT'] และ $_SERVER['REMOTE_ADDR']
7. กันไม่ให้เข้าถึงตำแหน่งที่เก็บ session file
8. เมื่อจะปฎิบัติงานที่สำคัญๆ ให้ขอตรวจ password ใหม่อีกครั้ง
ข้อ 2. ข้อ 3. ข้อ 6. ข้อ 7. CakePHP ช่วยทำให้แล้ว เพียงแค่กำหนดค่า Session กับ Security.level ให้เหมาะสม แต่ต้องทำใจเพราะทำให้ session หลุดง่ายขึ้น ซวยต้อง login ใหม่บ่อยอีก -*-
จาก
http://www.thaiseoboard.com/index.php?topic=94101....
ขึ้นไปด้านบน
