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

เซสชันทั่วไปหมายถึงข้อมูลที่เชื่อมการแลกเปลี่ยนข้อความที่เกี่ยวข้องกันระหว่างคอมพิวเตอร์ 
ตัวระบุเซสชันจะจำเป็นเมื่อโครงสร้างพื้นฐานของการสื่อสารนั้นใช้แบบไร้สถานะ เช่น HTTP

ในเว็บแอป เอชทีทีพีคุกกี้มักใช้เป็นตัวเก็บสถานะการพิสูจน์ตัวตนของผู้ใช้
คือ คุกกี้เช่นนี้ทำหน้าที่เป็น "กุญแจเซสชัน" (session key) ที่ระบุตัวผู้ใช้และช่วยเว็บเซิร์ฟเวอร์ในการรักษาเซสชัน
ผู้โจมตีที่ขโมยคุกกี้เช่นนี้ได้จะสามารถใช้เทคนิค "ส่งคุกกี้ต่อ" (Pass the Cookie) เพื่อไฮแจ็กเซสชันของผู้ใช้และเข้าถึงแอปเหมือนกับเป็นผู้ใช้เอง 

การไฮแจ็กเซสชันสามารถทำได้หลายวิธี คือ
 Source-Routed IP Packets เป็นการกำหนดเส้นทางของแพ็กเกตไอพีจากคอมพิวเตอร์ต้นทาง  ผู้โจมตีสามารถใช้วิธีนี้เพื่อเข้าร่วมการสื่อสารระหว่างเหยื่อ (ก) กับ เพราะแพ็กเกตไอพีจะส่งผ่านอุปกรณ์ของผู้โจมตี (ข) ซึ่งทำให้ผู้โจมตีดักจับและขโมยคุกกี้เซสชันได้  แต่เครือข่ายปัจจุบันก็มักจะปิดไม่ให้กำหนดเส้นทางเองเพื่อความปลอดภัย 
 Blind Hijacking เป็นการไฮแจ็กแบบไม่เห็น คือ หากการกำหนดเส้นทางจากต้นทางไม่เปิดให้ใช้งาน ผู้โจมตีสามารถพยายามไฮแจ็กเซสชันแบบมองไม่เห็น โดยการทายคำตอบที่ถูกต้องระหว่าง ก กับ ค ซึ่งอาจทำให้สามารถสั่งตั้งรหัสผ่านใหม่และเข้าถึงระบบบริการจากที่อื่นได้แม้จะไม่สามารถดูคำตอบ
 Man-in-the-Middle Attack การโจมตีแบบเป็นคนกลาง คือ ผู้โจมตีสามารถแทรกตัวเองอยู่ระหว่าง ก กับ ค โดยใช้ตัวดักฟังเพื่อติดตามการสื่อสารและขโมยคุกกี้เซสชัน 

การไฮแจ็กเซสชันเป็นภัยคุกคามที่สำคัญต่อเว็บแอป เพราะคุกกี้เซสชันที่ถูกขโมยสามารถให้ผู้โจมตีเข้าถึงบัญชีและข้อมูลของผู้ใช้ได้อย่างเต็มที่
เพื่อบรรเทาภัยนี้ สมัยใหม่จึงมีกลไกป้องกันคุกกี้ 
แต่ผู้พัฒนาเว็บก็ยังคงต้องออกแบบแอปของตนอย่างรอบคอบเพื่อลดความเสี่ยง

 วิธีการ 
มีวิธีหลักสี่วิธีที่ใช้ไฮแจ็กเซสชัน ซึ่งได้แก่
 การตั้งค่าเซสชันคงที่ (Session fixation) ซึ่งผู้โจมตีตั้งค่าตัวระบุเซสชันของผู้ใช้ให้เป็นค่าที่ตนรู้ เช่น โดยการส่งอีเมลไปยังผู้ใช้พร้อมลิงก์ที่มีตัวระบุเซสชันโดยเฉพาะ แล้วก็เพียงแต่ต้องรอจนกว่าผู้ใช้จะคลิกลิงก์เพื่อเข้าสู่ระบบ
 การดักจับเซสชั่น (Session side jacking) ซึ่งผู้โจมตีดักจับแพ็กเก็ตเพื่ออ่านข้อมูลสื่อสารระหว่างสองฝ่ายเพื่อขโมยคุกกี้เซสชัน เว็บไซต์หลายแห่งเคยใช้การเข้ารหัส SSL สำหรับหน้าเข้าสู่ระบบเพื่อป้องกันไม่ให้ผู้โจมตีเห็นรหัสผ่าน แต่ไม่เข้ารหัสหน้าที่เหลือของไซต์หลังจากยืนยันตัวตนแล้ว ซึ่งช่วยให้ผู้โจมตีสามารถดักจับข้อมูลทั้งหมดที่ส่งไปยังเซิร์ฟเวอร์ หรือดูเว็บเพจที่ผู้ใช้เข้าชม เนื่องจากข้อมูลนี้รวมถึงคุกกี้เซสชัน จึงทำให้สามารถปลอมตัวเป็นเหยื่อได้ แม้ตัวรหัสผ่านเองจะไม่ได้เปิดเผยเลย ที่เข้ารหัสไม่ดีจะเสี่ยงเป็นพิเศษ เนื่องจากทุกคนที่ใช้เครือข่ายร่วมกันโดยทั่วไปจะสามารถอ่านการรับส่งข้อมูลที่ป้องกันไว้ไม่ดีเกือบทั้งหมดระหว่างลูกข่ายกับแอกเซสพอยต์ได้
 การโจมตีด้วยสคริปต์ข้ามไซต์ (Cross-site scripting) ซึ่งผู้โจมตีหลอกให้คอมพิวเตอร์ของผู้ใช้เรียกใช้โค้ดที่น่าเชื่อถือเพราะดูเหมือนจะเป็นของเซิร์ฟเวอร์ ทำให้ผู้โจมตีสามารถได้คุกกี้หรือดำเนินการอื่นๆ ได้
มัลแวร์และซอฟต์แวร์ที่อาจจะไม่พึงปรารถนาอาจไฮแจ็กเบราว์เซอร์เพื่อขโมยไฟล์คุกกี้โดยที่ผู้ใช้ไม่รู้ตัว และดำเนินการต่างๆ (เช่น ติดตั้งแอป) ผู้โจมตีที่เข้าถึงอุปกรณ์ได้โดยตรงอาจสามารถขโมยกุญแจเข้ารหัสลับสำหรับเซสชัน (session key) เช่น โดยเข้าถึงเนื้อหาไฟล์หรือหน่วยความจำของคอมผู้ใช้หรือของ
หลังจากได้คุกกี้เซสชันที่สมควร ผู้ร้ายอาจใช้เทคนิคส่งคุกกี้ต่อ (Pass the Cookie) เพื่อไฮแจ็กเซสชัน

 ไฟร์ชีป 
ไฟร์ชีป (Firesheep) เป็นส่วนขยายบราวเซอร์ไฟร์ฟอกซ์ที่เปิดตัวในเดือนตุลาคม 2010 และแสดงให้เห็นถึงช่องโหว่การไฮแจ็กเซสชันในเครือข่ายที่ไม่ปลอดภัย
โปรแกรมสามารถดักจับคุกกี้ที่ไม่ได้เข้ารหัสสำหรับเว็บไซต์ยอดนิยม ทำให้ผู้ใช้สามารถเข้าควบคุมเซสชันของผู้อื่นในเครือข่ายเดียวกันได้
เครื่องมือจะแสดงเป้าหมายที่เป็นไปได้ในแถบด้านข้าง ช่วยให้เข้าถึงเซสชันคนอื่นได้โดยไม่ต้องขโมยรหัสผ่าน
เว็บไซต์ที่รองรับรวมถึงเฟซบุ๊ก ทวิตเตอร์ ฟลิคเกอร์ แอมะซอน วินโดวส์ไลฟ์ และกูเกิล โดยสามารถใช้สคริปต์เพื่อเพิ่มเว็บอื่นๆ
และเพียงไม่กี่เดือนหลังจากนั้น เฟซบุ๊กและทวิตเตอร์ต่างก็เริ่มให้ใช้เว็บไซต์แบบเข้ารหัส ซึ่งต่อมากลายเป็นการบังคับ

 ดรอยด์ชีป 
ดรอยด์ชีป (DroidSheep) เป็นเครื่องมือบนแอนดรอยด์ที่ใช้ไฮแจ็กเซสชันได้ง่าย
โปรแกรมจะดักฟังแพ็กเก็ตเอชทีทีพีที่ส่งผ่านเครือข่ายไร้สาย (802.11) แล้วดึงตัวระบุเซสชันจากแพ็คเก็ตเพื่อนำเอาไปใช้
โปรแกรมสามารถดักจับเซสชันโดยใช้คลังซอฟต์แวร์ libpcap และรองรับเครือข่ายต่างๆ คือ เครือข่ายเปิด (ไม่เข้ารหัส), เครือข่ายที่เข้ารหัสด้วย WEP และเครือข่ายที่เข้ารหัสด้วย WPA/WPA2 (เฉพาะ PSK เท่านั้น)
ซอฟต์แวร์นี้ใช้ libpcap และ arpspoof
โปรแกรมเคยมีให้ติดตั้งบน กูเกิล เพลย์ แต่ก็ถูกถอนออกไปแล้ว

 คุกกี้แคดเจอร์ 
คุกกี้แคดเจอร์ (CookieCadger) เป็นแอปจาวาแบบกราฟิก ที่ช่วยให้สามารถโจมตีแบบ sidejacking และเล่นซ้ำคำขอของ HTTP โดยอัตโนมัติ 
เป็นเครื่องมือช่วยแอดมินเพื่อตรวจสอบการรั่วไหลของข้อมูลจากแอปที่ใช้คำขอ GET โดยไม่ได้เข้ารหัส
เป็นโปรแกรมอรรถประโยชน์โอเพนซอร์สแบบข้ามแพลตฟอร์มที่ใช้ Wireshark ซึ่งสามารถตรวจสอบอีเทอร์เน็ตแบบมีสาย, วายฟายที่ไม่ปลอดภัย หรือโหลดไฟล์จับแพ็กเก็ตเพื่อวิเคราะห์แบบออฟไลน์
คุกกี้แคดเจอร์ได้ใช้เพื่อเน้นจุดอ่อนของเว็บไซต์ที่ทีมเยาวชนใช้แชร์ข้อมูล เช่น Shutterfly (ใช้โดยลีกฟุตบอล AYSO) และ TeamSnap

 การป้องกัน 
วิธีป้องกันการไฮแจ็กเซสชันรวมถึง
 การเข้ารหัสข้อมูลคู่สื่อสารด้วย SSL/TLS โดยเฉพาะตัวกุญแจเซสชัน (แม้ว่าจะดีสุดถ้าเข้ารหัสข้อมูลที่รับส่งทั้งหมด) ธนาคารออนไลน์และบริการอีคอมเมิร์ซอื่นๆ ล้วนนิยมเทคนิคนี้ เนื่องจากสามารถป้องกันการดักฟังได้อย่างสิ้นเชิง อย่างไรก็ตาม ก็ยังสามารถไฮแจ็กเซสชันในรูปแบบอื่น ในปี2013 นักวิทยาศาสตร์ชาวดัตช์จากมหาวิทยาลัยรัดเบาด์ไนเมเคิน ได้เสนอวิธีการป้องกันการไฮแจ็กเซสชันโดยเชื่อมโยงเซสชันของแอปกับข้อมูลรับรอง SSL/TLS
 การใช้ตัวเลขสุ่มหรือสายอักษรยาวเป็นกุญแจเซสชัน ซึ่งช่วยลดความเสี่ยงที่ผู้โจมตีจะเดากุญแจเซสชันได้อย่างถูกต้องโดยลองผิดลองถูกหรือโดยโจมตีแบบใช้กำลัง
 การสร้างรหัสเซสชันใหม่หลังจากเข้าสู่ระบบได้สำเร็จ ซึ่งป้องกันการการตั้งค่าเซสชันคงที่ เนื่องจากผู้โจมตีไม่ทราบค่าระบุเซสชันของผู้ใช้หลังจากเข้าสู่ระบบแล้ว
 บริการบางอย่างจะตรวจสอบตัวตนของผู้ใช้เพิ่มเติม เช่น เว็บเซิร์ฟเวอร์อาจตรวจสอบกับคำขอแต่ละชุดว่าที่อยู่ไอพีของผู้ใช้ตรงกับที่ใช้ล่าสุดในเซสชันนั้นหรือไม่ แต่วิธีนี้ก็ไม่สามารถป้องกันการโจมตีจากผู้ที่ใช้ที่อยู่ไอพีเดียวกัน และอาจสร้างความรำคาญให้แก่ผู้ใช้ที่ที่อยู่ไอพีเปลี่ยนแปลงได้ระหว่างการท่องเว็บ
 อนึ่ง บริการบางอย่างจะเปลี่ยนค่าคุกกี้ในทุกคำขอ ซึ่งช่วยลดช่วงเวลาที่ผู้โจมตีสามารถดำเนินการได้และทำให้ระบุได้ง่ายว่ามีการโจมตีหรือไม่ แต่ก็ยังอาจก่อปัญหาทางเทคนิคอื่นๆ (เช่น คำขอที่ถูกต้องสองชุดที่มาติดๆ กันจากไคลเอนต์เดียวกันอาจก่อข้อผิดพลาดในการตรวจสอบโทเค็นบนเซิร์ฟเวอร์)