Web2.0, HPC, Unix, and my mine.
Session and Cookies
หลักการทั่วๆไปแล้ว จะใช้ cookies เก็บ session id ไว้ แล้วใช้ session เก็บข้อมูลพวก user_id หรือ username เป็นต้น
โดย cookies นั้นจะเป็นตัวกำหนดว่ามีอายุนานเท่าไหร่ เช่น 1hr 5hr หรือ 20 year(^^)
ข้อเสียของ session
- hacker สามารถขโมย session ของเราได้
- เมื่อ restart server ปุ๊ป session id ของ client ก็จะหายไปหมด
- ไม่สามารถทำงานข้าม platform ได้ เช่น ส่งข้อมูลจาก .net framework ไปยัง php
ข้อเสียของ cookie
- ถ้า client ไม่ได้ enable cookie ไว้ จะไม่สามารถเก็บข้อมูลได้อีกเลย
- ข้อมูลส่วนตัวของ user อาจถูกขโมยไปได้
- ไม่มี security เรยซักนิด
สมมติเหตุการณ์ว่ามี linux 2 เครื่อง windows 2 เครื่อง และ database server 1 เครื่อง แน่นอน การที่จะ integrate plateform ให้ส่งข้อมูล(session)ข้ามserver นั้น สามารถทำได้ โดยเก็บข้อมูลในรูปแบบต่างๆดังนี้
JSON JavaScript Object Notation (RFC4627)
support list : ActionScript, C, C#, ColdFusion, Common Lisp, E, Java, JavaScript, Lua, ML, Objective CAML, Perl, PHP, Python, Rebol, and Ruby.YAML Yet Another Markup Language
support list:
JavaScript ,Objective-C ,Perl ,PHP ,Python ,Ruby (YAML included in standard library since 1.8.) ,Java ,Haskell , XML (currently draft only)WDDX (Web Distributed Data eXchange)
support list : Python, PHP, Java, C++, .NET, Flash, lisp, Haskell
ถ้ามองอีกแง่มุมนึง มีคนให้ใช้เรื่องของ clustering จริงๆทำได้ไม๊ ก็ตอบว่าทำได้ ปัจจุบัน J2EE container ก็ support clustering แล้วด้วย ถึงแม้จะทำได้ง่ายมากๆ แต่ก็มีปัญหาเรื่องของ performance and scalabilty หมายความว่า ทุกๆเครื่องที่มาทำ clustering จะต้อง replicate session ให้ทุก cluster นั่นแปลว่า ทุกเครื่องจะต้องกิน ram เท่าๆกันหมด ดังนั้นไม่เหมาะสมในการทำ clustering อย่างแน่นอน
สรุป
ดังนั้น ระบบเครื่อข่ายขนาดใหญ่ มักจะไม่ใช้ session ในการเก็บ state user แต่จะใช้วิธีการเก็บลง database, file system, cache server โดยเก็บเฉพาะ user_id ซึ่งเป็น ticket ของ session ใน cookie ซึ่งอาจเกิดจากการนำ user_id+client ip+timestamp มา encrypt ก็จะได้ ticket ที่มีความปลอดภัยในระดับนึง ถ้าถูกขโมย ticket แต่ ip address ไม่ตรง ก็เป็นการป้องกันเบื้องต้นได้ระดับนึงครับ
| Print article | This entry was posted by klainfo on June 10, 2009 at 2:42 pm, and is filed under Web. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |

