ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: หนึ่งสุดหล่อ ที่ 21 ธันวาคม 2009, 17:32:41



หัวข้อ: สอบถามเทพเรื่อง php session & security
เริ่มหัวข้อโดย: หนึ่งสุดหล่อ ที่ 21 ธันวาคม 2009, 17:32:41
สอบถามเทพ php ครับเกี่ยวกับฟังก์ชั่น session

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

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

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

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

ขอบคุณครับ
 :wanwan017:



หัวข้อ: Re: สอบถามเทพเรื่อง php session & security
เริ่มหัวข้อโดย: Reality ที่ 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:


หัวข้อ: Re: สอบถามเทพเรื่อง php session & security
เริ่มหัวข้อโดย: vii ที่ 21 ธันวาคม 2009, 22:16:50
ไม่ค่อยอยากตอบคำถามที่ถามเทพ เพราะผมไม่ใช่เทพ  :o

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

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


หัวข้อ: Re: สอบถามเทพเรื่อง php session & security
เริ่มหัวข้อโดย: หนึ่งสุดหล่อ ที่ 21 ธันวาคม 2009, 23:33:11
ขอบคุณทั้งคู่มากเลยนะครับ
 :wanwan017:


หัวข้อ: Re: สอบถามเทพเรื่อง php session & security
เริ่มหัวข้อโดย: itmicrobit ที่ 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