มีช่องโหว่ด้านความปลอดภัยหลายประเภทที่พบในเว็บไซต์ ช่องโหว่หนึ่งที่น่าสนใจเรียกว่า “Session Fixation” การแก้ไขเซสชันเป็นปัญหาที่ผู้โจมตีสามารถมีอิทธิพลต่อตัวระบุเซสชันหรือที่เรียกว่ารหัสเซสชันของผู้ใช้ จากนั้นจึงใช้เพื่อเข้าถึงบัญชีของตน ช่องโหว่ประเภทนี้สามารถทำงานได้สองวิธี ซึ่งช่วยให้ผู้โจมตีค้นหาหรือตั้งค่า ID เซสชันของผู้ใช้รายอื่นได้
วิธีดำเนินการโจมตีการตรึงเซสชัน
รหัสเซสชันของผู้ใช้มักเป็นส่วนสำคัญของการรับรองความถูกต้องของเว็บไซต์ และในหลายกรณี จะเป็นข้อมูลเดียวที่ระบุผู้ใช้ที่เข้าสู่ระบบโดยเฉพาะ ปัญหาคือหากผู้โจมตีสามารถตั้งค่าหรือเรียนรู้รหัสเซสชันของผู้อื่นได้ ผู้ใช้สามารถใช้โทเค็นเซสชันแล้วสามารถทำหน้าที่เป็นผู้ใช้ได้
โดยทั่วไป ทำได้โดยหลอกให้ผู้ใช้คลิกลิงก์ฟิชชิ่งประเภทหนึ่ง ลิงก์นั้นถูกต้องตามกฎหมายโดยสมบูรณ์ แต่มีตัวแปรที่กำหนดรหัสเซสชันที่ระบุ หากผู้ใช้เข้าสู่ระบบด้วย ID เซสชัน และเซิร์ฟเวอร์ไม่ได้กำหนด ID เซสชันใหม่ให้กับผู้ใช้ในการเข้าสู่ระบบ ผู้โจมตีสามารถตั้งค่า ID เซสชันให้เหมือนกันและเข้าถึงบัญชีของเหยื่อได้
อีกวิธีหนึ่งที่ผู้โจมตีสามารถค้นพบ ID เซสชันของเหยื่อได้คือถ้ามันปรากฏใน URL ตัวอย่างเช่น หากผู้โจมตีสามารถหลอกล่อเหยื่อให้ส่งลิงก์และรวม ID เซสชันของเหยื่อ ผู้โจมตีสามารถใช้ ID เซสชันเพื่อเข้าถึงบัญชีของเหยื่อได้ ในบางกรณีอาจเกิดขึ้นได้โดยบังเอิญ ตัวอย่างเช่น หากผู้ใช้คัดลอก URL ด้วยรหัสเซสชันและวางให้เพื่อนหรือในฟอรัม ผู้ใช้ที่ติดตามลิงก์จะถูกลงชื่อเข้าใช้ด้วยบัญชีของผู้ใช้
การแก้ไขการตรึงเซสชัน
มีวิธีแก้ปัญหาสองสามข้อสำหรับปัญหานี้ และเช่นเคย ทางออกที่ดีที่สุดคือการปรับใช้การแก้ไขให้มากที่สุดเท่าที่จะเป็นไปได้ซึ่งเป็นส่วนหนึ่งของกลยุทธ์การป้องกันในเชิงลึก วิธีแก้ปัญหาแรกคือเปลี่ยนรหัสเซสชันของผู้ใช้เมื่อลงชื่อเข้าใช้ ซึ่งจะป้องกันไม่ให้ผู้โจมตีมีอิทธิพลต่อรหัสเซสชันของผู้ใช้ที่เข้าสู่ระบบ คุณยังสามารถกำหนดค่าเซิร์ฟเวอร์ให้ยอมรับเฉพาะรหัสเซสชันที่สร้างขึ้นและปฏิเสธรหัสเซสชันที่ผู้ใช้ระบุอย่างชัดเจน
เว็บไซต์ควรได้รับการกำหนดค่าไม่ให้ใส่รายละเอียดผู้ใช้ที่ละเอียดอ่อน เช่น รหัสเซสชันใน URL และควรวางไว้ในพารามิเตอร์คำขอ GET หรือ POST ซึ่งจะป้องกันผู้ใช้จากการบุกรุก ID เซสชันของตนเองโดยไม่ได้ตั้งใจ การใช้ทั้ง ID เซสชันและโทเค็นการพิสูจน์ตัวตนที่แยกจากกัน คุณจะเพิ่มจำนวนข้อมูลที่ผู้โจมตีต้องการได้เป็นสองเท่าและป้องกันผู้โจมตีไม่ให้เข้าถึงเซสชันด้วยรหัสเซสชันที่รู้จัก
จำเป็นอย่างยิ่งที่รหัสเซสชันที่ถูกต้องทั้งหมดสำหรับผู้ใช้จะใช้งานไม่ได้เมื่อมีการคลิกปุ่มออกจากระบบ เป็นไปได้ที่จะสร้างรหัสเซสชันใหม่ในทุกคำขอ หากรหัสเซสชันก่อนหน้าไม่ถูกต้อง สิ่งนี้จะป้องกันผู้โจมตีจากการใช้ ID เซสชันที่รู้จัก วิธีการนี้ยังช่วยลดหน้าต่างการคุกคามลงอย่างมากหากผู้ใช้เปิดเผย ID เซสชันของตนเอง
กลยุทธ์การป้องกันในเชิงลึกสามารถขจัดปัญหานี้เนื่องจากความเสี่ยงด้านความปลอดภัยได้ด้วยการเปิดใช้วิธีการเหล่านี้หลายวิธี