ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์Programmingสอบถามเทพเรื่อง php session & security
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: สอบถามเทพเรื่อง php session & security  (อ่าน 4076 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
หนึ่งสุดหล่อ
สมุนแก๊งเสียว
*

พลังน้ำใจ: 64
ออฟไลน์ ออฟไลน์

กระทู้: 593



ดูรายละเอียด
« เมื่อ: 21 ธันวาคม 2009, 17:32:41 »

สอบถามเทพ php ครับเกี่ยวกับฟังก์ชั่น session

1. เมื่อสั่ง session start แล้ว ตัว session มันจะลบตัวเองเมื่อไหร่ครับ หากไม่ได้สั่งให้มันหยุด

2. session แต่ละตัวที่สร้างขึ้นมาจะอ้างอิงอยู่กับ ไอพี เครื่อง หรือเวบบราวเซอร์ครับ

3. การใช้ฟังก์ชั่น session ของ php เหมาะกับการทำ login script ที่อนุญาตให้ล้อกอินได้ทีละเครื่องเดียว มากแค่ไหนครับ มีช่องโหว่อะไรหรือเปล่า

4. มีฟีเจอร์ หรือการออกแบบอื่นๆ ที่สามารถช่วยเรื่องการจำกัด login ให้ได้ทีละเครื่องเดียว วิธีไหนที่ดีกว่า session หรือเปล่าครับ (ดีกว่า=ปลอดภัยกว่า หรือ ทำง่ายกว่า)

ขอบคุณครับ
 wanwan017

บันทึกการเข้า
Reality
สมุนแก๊งเสียว
*

พลังน้ำใจ: 51
ออฟไลน์ ออฟไลน์

กระทู้: 757



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 21 ธันวาคม 2009, 17:38:33 »

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 มันเปลี่ยนแปลงได้!

ปล. ผมไม่ใช่เทพครับ แค่ช่วยตอบ คำตอบก็ไม่ได้ช่วยอะไรเท่าไหร่ wanwan004
บันทึกการเข้า

*You walk right into reality, While my heart's still wild and free.. 

Midnight Adventure
vii
Verified Seller
สมุนแก๊งเสียว
*

พลังน้ำใจ: 132
ออฟไลน์ ออฟไลน์

กระทู้: 986



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 21 ธันวาคม 2009, 22:16:50 »

ไม่ค่อยอยากตอบคำถามที่ถามเทพ เพราะผมไม่ใช่เทพ  Shocked

การทำป้องกันล็อกอินซ้อน ผมใช้ session_id บันทึกใน db และคุกกี้ เมื่อล็อกอิน
แล้วเวลาเช็คก็ดึงจากทั้งสองแหล่งมาดู ถ้าไม่มี ก็ให้ไปล็อกอินใหม่ ถ้ามีและเหมือนกัน ก็ ok นอกนั้นคือมีแต่ไม่เหมือนกัน แจ้งเตือนว่าล็อกอินซ้อน และส่งไปล็อกอินใหม่

หรือหากสามารถ ก็ทำระบบสร้างรหัสผ่านใหม่เมื่อจับล็อกอินซ้อนได้ แล้วส่งอีเมลให้ผู้ใช้รู้ว่าเปลี่ยนรหัสเป็นอะไร แล้วให้ผู้ใช้เข้าไปแก้ไขใหม่ มันก็ช่วยได้ดีขึ้น
บันทึกการเข้า

หนึ่งสุดหล่อ
สมุนแก๊งเสียว
*

พลังน้ำใจ: 64
ออฟไลน์ ออฟไลน์

กระทู้: 593



ดูรายละเอียด
« ตอบ #3 เมื่อ: 21 ธันวาคม 2009, 23:33:11 »

ขอบคุณทั้งคู่มากเลยนะครับ
 wanwan017
บันทึกการเข้า
itmicrobit
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 799



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 21 ธันวาคม 2009, 23:49:22 »

การป้องการ session hijacking
การป้องกัน session ยุ่งยากน่าดูเหมือนกัน -__-'

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 ใหม่บ่อยอีก -*-


hxxp://cakephp.jitwitya.com/post/prevent-session-hijacking
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์