Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

1. บทนำ

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

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

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

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

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

2. ภาพรวมของคุกกี้ HTTP

2.1. ประวัติศาสตร์

คำว่าคุกกี้ได้มาจากคำว่า magic cookie ซึ่งเป็นข้อมูลที่ส่งและรับโดยโปรแกรมคอมพิวเตอร์โดยไม่มีการเปลี่ยนแปลง โปรแกรมเมอร์ชื่อ Lou Montuli เกิดแนวคิดในการใช้คุกกี้วิเศษในการสื่อสารทางเว็บในปี 1994 ในเวลานั้นเขาทำงานให้กับ Netscape Communications ในโครงการพัฒนาแอปพลิเคชันอีคอมเมิร์ซสำหรับ MCI มีการใช้คุกกี้เป็นโซลูชันในการสร้างตะกร้าสินค้าเสมือน ช่วยให้เซิร์ฟเวอร์ของ MCI ไม่จำเป็นต้องบันทึกสถานะของธุรกรรม แต่จะถูกจัดเก็บไว้ในคอมพิวเตอร์ของผู้ใช้แทน

Montuli ได้เขียนข้อกำหนดแรกสำหรับคุกกี้ Netscape ร่วมกับ John Giannandrea เวอร์ชัน 0.0beta ของ Mosaic Netscape เปิดตัวเมื่อวันที่ 13 ตุลาคม พ.ศ. 2537 รองรับคุกกี้ การใช้คุกกี้ครั้งแรก (นอกห้องปฏิบัติการ) ตรวจสอบว่าลูกค้าที่เยี่ยมชมเว็บไซต์ของ Netscape เคยเยี่ยมชมมาก่อนหรือไม่ Montuli ได้รับสิทธิบัตรคุกกี้ในปี 1995 และ Internet Explorer เวอร์ชัน 2 (เผยแพร่เมื่อเดือนตุลาคม 1995) ได้รวมการใช้คุกกี้เข้าด้วยกัน

การแนะนำคุกกี้ยังไม่แพร่หลายในช่วงเวลานี้ โดยเฉพาะอย่างยิ่ง คุกกี้จะได้รับการยอมรับตามค่าเริ่มต้น ผู้ใช้จะไม่ได้รับแจ้งถึงการมีอยู่ของพวกเขา สาธารณชนได้เรียนรู้เกี่ยวกับคุกกี้หลังจากบทความเกี่ยวกับคุกกี้ดังกล่าวใน Financial Times เผยแพร่เมื่อวันที่ 12 กุมภาพันธ์ 1996 ตั้งแต่นั้นมา คุกกี้ได้รับความสนใจเป็นอย่างมาก โดยเฉพาะข้อมูลส่วนตัวที่อยู่ในคุกกี้ คุกกี้ถูกหารือในการพิจารณาคดีของคณะกรรมาธิการการค้าแห่งสหรัฐอเมริกาสองครั้งในปี 1996 และ 1997

การอภิปรายครั้งแรกเกี่ยวกับข้อกำหนดเฉพาะของคุกกี้อย่างเป็นทางการเริ่มขึ้นในเดือนเมษายน พ.ศ. 2538 มีการจัดตั้งกลุ่มพิเศษภายใน Internet Engineering Task Force (IETF) เพื่อดำเนินงานนี้ สุดท้าย ข้อกำหนดดังกล่าวได้รับการเผยแพร่โดยกลุ่มในเดือนกุมภาพันธ์ พ.ศ. 2540 ข้อกำหนดดังกล่าวได้กำหนดคุกกี้ของบุคคลที่สามว่าไม่เป็นที่ยอมรับสำหรับทุกคน หรืออย่างน้อยก็ไม่ได้เปิดใช้งานตามค่าเริ่มต้น
ในเดือนเมษายน พ.ศ. 2554 ข้อกำหนดมาตรฐานสำหรับคุกกี้ในการใช้งานจริงได้รับการเผยแพร่ในเอกสารRFC 6265

2.2. คำศัพท์เฉพาะทาง

คุกกี้เซสชัน

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

คุกกี้ถาวร

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

คุกกี้ที่ปลอดภัย

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

คุกกี้ HTTP เท่านั้น

เบราว์เซอร์ส่วนใหญ่รองรับแอตทริบิวต์ HttpOnly ของคุกกี้ คุกกี้เซสชัน HttpOnly จะถูกใช้ในคำขอ HTTP (หรือ HTTPS) เดียวเท่านั้น ดังนั้นจึงจำกัดการเข้าถึงโดย API ที่ไม่ใช่ HTTP เช่น Javascript ข้อจำกัดนี้บรรเทาลงแต่ไม่ได้กำจัดการขโมยคุกกี้ผ่านช่องโหว่ Cross-site scripting (XSS)

คุกกี้ของบุคคลที่สาม

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

ตัวอย่างเช่น สมมติว่า ผู้ใช้เยี่ยมชมเว็บไซต์example1.comเว็บไซต์นี้มีโฆษณาจาก ad.foxytracking.com เมื่อโหลดแล้ว คุกกี้ของ ad.foxytracking.com จะถูกบันทึกไว้ จากนั้น เขาก็ไปที่เว็บไซต์อื่น (example2.com) ซึ่งมีโฆษณาจาก ad.foxytracking.com เช่นกัน และยังตั้งค่าคุกกี้ของ ad.foxytracking.com อีกด้วย สุดท้ายนี้ คุกกี้ทั้งสองนี้จะถูกส่งไปยังผู้โฆษณาเมื่อโหลดโฆษณาหรือเข้าถึงเว็บไซต์ของพวกเขา ผู้โฆษณาสามารถใช้คุกกี้เหล่านี้เพื่อสร้างประวัติการเข้าชมของผู้ใช้บนเว็บไซต์ทั้งหมดที่มีโฆษณาของตน

ในปี 2014 มีเว็บไซต์บางแห่งที่ตั้งค่าคุกกี้ซึ่งสามารถอ่านได้โดยโดเมนบุคคลที่สามมากกว่า 100 โดเมน โดยเฉลี่ยแล้ว เว็บไซต์จะมีคุกกี้ประมาณ 10 ชุด โดยจำนวนคุกกี้สูงสุดจะมากกว่า 800 ชุด

ซุปเปอร์คุกกี้

ซูเปอร์คุกกี้คือคุกกี้ที่มาจากโดเมนระดับบนสุด เช่น .com หรือคำต่อท้ายสาธารณะ เช่น .co.uk สิ่งสำคัญคือเบราว์เซอร์จะบล็อก supercookies เนื่องจากปัญหาด้านความปลอดภัยบางประการ หากเลิกบล็อก ผู้โจมตีที่ควบคุมเว็บไซต์ที่เป็นอันตรายสามารถตั้งค่าซูเปอร์คุกกี้เพื่อเลียนแบบคำขอของผู้ใช้ โดยส่งคำขอไปยังเว็บไซต์อื่นที่ใช้โดเมนระดับบนสุดหรือคำต่อท้ายสาธารณะเดียวกัน ตัวอย่างเช่น ซูเปอร์คุกกี้ที่มาจากโดเมน .com อาจเป็นอันตรายต่อคำขอที่ส่งไปยัง example.com แม้ว่าคุกกี้จะไม่ได้มาจาก example.com ก็ตาม สามารถนำไปใช้ในการเข้าสู่ระบบปลอมหรือเปลี่ยนข้อมูลผู้ใช้ได้

คุกกี้ซอมบี้

คุกกี้ซอมบี้คือคุกกี้ที่ถูกสร้างขึ้นใหม่โดยอัตโนมัติหลังจากที่ผู้ใช้ลบออก ซึ่งทำได้โดยสคริปต์ที่เก็บเนื้อหาของคุกกี้ในตำแหน่งอื่น เช่น ที่เก็บเนื้อหา Flash, ที่เก็บ HTML5 หรือกลไกฝั่งไคลเอ็นต์อื่นๆ

2.3. โครงสร้างคุกกี้

คุกกี้ที่มีขนาด 4KB ประกอบด้วยองค์ประกอบหลัก 7 ส่วน:

  1. ชื่อ
  2. ค่า
  3. หมดอายุ (วันหมดอายุ)
  4. เส้นทาง (เส้นทางไปยังตำแหน่งที่คุกกี้ถูกต้อง “/” หมายถึงคุกกี้นั้นถูกต้องในเส้นทางใดก็ได้)
  5. โดเมน
  6. ปลอดภัย
  7. httpเท่านั้น

จำเป็นต้องมีสององค์ประกอบแรก (ชื่อและค่า)

2.4. ใช้

การจัดการเซสชัน

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

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

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

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

ส่วนบุคคล

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

ตัวอย่างที่โดดเด่นคือคุณลักษณะการแนะนำหนังสือของ amazon.com เมื่อผู้ใช้คลิกหนังสือ Amazon จะให้คำแนะนำเกี่ยวกับหนังสือเล่มถัดไปที่ผู้ใช้ควรอ่าน คำแนะนำเหล่านี้ขึ้นอยู่กับหนังสือที่ผู้ใช้เคยเปิดดูก่อนหน้านี้และหนังสือเล่มใดที่พวกเขาเลือกซื้อ

อีกตัวอย่างหนึ่งคือคุณลักษณะคำแนะนำการค้นหาของ Google Search เมื่อคุณเข้าสู่ระบบด้วยบัญชีส่วนตัวของคุณและทำการค้นหา Google จะให้คำแนะนำ "สำหรับคุณโดยเฉพาะ" และผลลัพธ์ที่คุณต้องการจะปรากฏที่ด้านบนของรายการเสมอ

เฝ้าสังเกต

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

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

2.5. การปรับใช้

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

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

เว็บเบราว์เซอร์แต่ละตัวสามารถจัดเก็บคุกกี้ได้อย่างน้อย 300 ตัวในไฟล์ขนาด 4KB และคุกกี้อย่างน้อย 20 ตัวต่อเซิร์ฟเวอร์หรือโดเมน

ตั้งค่าคุกกี้

เว็บเซิร์ฟเวอร์และเบราว์เซอร์สื่อสารกันผ่าน HTTP (HyperText Transfer Protocol) ตัวอย่างเช่น ในการเข้าถึงหน้า http://www.example.org/index.html เบราว์เซอร์จะเชื่อมต่อกับเซิร์ฟเวอร์โดยส่งคำขอ HTTP ดังนี้:

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

เซิร์ฟเวอร์จะตอบสนองโดยส่งแพ็กเก็ตข้อความธรรมดาไปยังเบราว์เซอร์ที่เรียกว่า HTTP Response แพ็กเก็ตนี้อาจมีบรรทัดที่มีเนื้อหาของคุกกี้:

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

Set-Cookie เป็นช่องที่สั่งให้เบราว์เซอร์จัดเก็บคุกกี้และส่งไปยังเซิร์ฟเวอร์ในอนาคตทุกครั้งที่มีการร้องขอไปยังเซิร์ฟเวอร์ (หากคุกกี้ยังหมดอายุ) ตัวอย่างเช่น เบราว์เซอร์ส่งคำขอไปที่ http://www.example.org/spec.html โดยการส่งคำขอ HTTP ดังนี้:

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

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

เซิร์ฟเวอร์สามารถแก้ไขได้โดยการส่งฟิลด์ Set-Cookie: name=value ในการตอบกลับ HTTP ไปยังเบราว์เซอร์ เบราว์เซอร์จะแทนที่ค่าคุกกี้เก่าด้วยค่าใหม่นี้

ค่าคุกกี้สามารถรวมอักขระ ASCII ที่สามารถพิมพ์ได้ ยกเว้น “,”, “;” และพื้นที่สีขาว ชื่อคุกกี้ต้องไม่มีอักขระ '=' เนื่องจากเป็นอักขระที่แยกชื่อและค่า
บางครั้งคำว่า crumb cookie ใช้เพื่ออ้างถึงคู่ชื่อ-ค่าของคุกกี้

คุกกี้อาจถูกตั้งค่าโดย Javascript หรือภาษาสคริปต์ที่คล้ายกัน ใน Javascript วัตถุ document.cookie ใช้เพื่อตั้งค่าคุกกี้ คุณลักษณะ HttpOnly มีหน้าที่ป้องกันสคริปต์ที่เสียหายจากการอ่านเนื้อหาคุกกี้

คุณสมบัติของคุกกี้

นอกจากคู่ชื่อ-ค่าแล้ว เซิร์ฟเวอร์ยังสามารถตั้งค่าคุณสมบัติคุกกี้อื่นๆ ได้อีกจำนวนหนึ่ง: โดเมน, เส้นทาง, การหมดอายุ, อายุสูงสุด, ปลอดภัย และ HttpOnly เบราว์เซอร์จะไม่ส่งแอตทริบิวต์เหล่านี้ไปยังเซิร์ฟเวอร์ แต่จะส่งเฉพาะคู่ชื่อ-ค่าเท่านั้น เบราว์เซอร์ใช้คุณลักษณะเหล่านี้เพื่อกำหนดเวลาที่จะลบคุกกี้ บล็อกคุกกี้ หรือส่งคุกกี้ไปยังเซิร์ฟเวอร์

โดเมนและเส้นทาง

โดเมนและเส้นทางกำหนดขอบเขตของคุกกี้ อนุญาตให้เบราว์เซอร์กำหนดเวลาส่งคุกกี้ไปยังเซิร์ฟเวอร์ หากไม่ได้ระบุ จะมีค่าเริ่มต้นเป็นโดเมนและเส้นทางของออบเจ็กต์ที่ร้องขอ อย่างไรก็ตาม มีความแตกต่างระหว่างคุกกี้ที่ตั้งค่าไว้สำหรับ foo.com ที่ไม่มีแอตทริบิวต์โดเมน และคุกกี้ที่ตั้งค่าด้วยแอตทริบิวต์โดเมน foo.com ในกรณีแรก คุกกี้จะถูกส่งเมื่อมีการร้องขอไปยัง foo.com เท่านั้น ในกรณีหลัง คุกกี้จะถูกส่งไปยังโดเมนย่อยทั้งหมดของ foo.com ต่อไปนี้คือตัวอย่างคำสั่ง Set-Cookie จากเว็บไซต์หลังจากที่ผู้ใช้เข้าสู่ระบบ จากคำขอไปยัง docs.foo.com:

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

LSID คุกกี้แรกไม่มีแอตทริบิวต์โดเมนและมีเส้นทาง /accounts เบราว์เซอร์จะส่งคุกกี้เฉพาะเมื่อหน้าที่ร้องขอมีอยู่ใน docs.foo.com/accounts คุกกี้สองตัวที่เหลือ HSID และ SSID จะถูกส่งกลับไปยังเซิร์ฟเวอร์ หากมีการร้องขอไปยังโดเมนย่อยของ foo.com
นอกจากนี้ยังสามารถตั้งค่าคุกกี้สำหรับโดเมนบนสุดและโดเมนย่อยเท่านั้น การตั้งค่าคุกกี้บนwww.foo.comจากwww.bar.comจะไม่ได้รับอนุญาตด้วยเหตุผลด้านความปลอดภัย

หมดอายุและอายุสูงสุด

แอตทริบิวต์ Expires จะบอกเบราว์เซอร์เมื่อต้องลบคุกกี้ วันที่ใน Expires มีลักษณะดังนี้: “Wdy, DD Mon YYYY HH:MM:SS GMT” Max-Age ยังใช้เพื่อระบุวันหมดอายุของคุกกี้อีกด้วย ลองพิจารณาตัวอย่างต่อไปนี้:

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

คุกกี้แรกถูกกำหนดให้หมดอายุในวันที่ 15 มกราคม 2013 โดยเบราว์เซอร์จะใช้งานเมื่อคุกกี้หมดอายุ คุกกี้ตัวที่สอง made_write_conn ไม่มีวันหมดอายุ และถูกใช้เป็นคุกกี้เซสชัน โดยจะถูกลบออกเมื่อปิดเบราว์เซอร์ คุกกี้ตัวที่สาม reg_fb_gate มีวันหมดอายุในอดีต มันจะถูกลบทันที

ปลอดภัยและ HttpOnly

คุณสมบัติ Secure และ HttpOnly เป็นโมฆะ แต่การมีอยู่บ่งชี้ว่ามีการใช้ฐาน Secure และ HttpOnly

คุณลักษณะ Secure ช่วยให้การส่งคุกกี้ภายในการเชื่อมต่อที่เข้ารหัส หากเว็บเซิร์ฟเวอร์ตั้งค่าคุกกี้ด้วยคุณลักษณะที่ปลอดภัยจากการเชื่อมต่อที่ไม่ปลอดภัย คุกกี้ยังคงสามารถถูกสกัดกั้นโดยการโจมตีแบบแทรกกลาง

คุณลักษณะ HttpOnly จะสั่งให้เบราว์เซอร์ไม่เปิดเผยคุกกี้ผ่านการเชื่อมต่ออื่นที่ไม่ใช่ HTTP (หรือ HTTPS) เช่น Javascript ดังนั้นจึงทำให้การรับคุกกี้ได้ยากโดยการใช้ประโยชน์จากช่องโหว่ Cross-Site Scripting (XSS)

3. ปัญหาด้านความปลอดภัยบางประการเมื่อใช้คุกกี้

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

การดักฟัง

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

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

ปัญหานี้สามารถแก้ไขได้โดยใช้โปรโตคอลที่ปลอดภัยระหว่างคอมพิวเตอร์ของผู้ใช้และเซิร์ฟเวอร์ - โปรโตคอล HTTPS เซิร์ฟเวอร์สามารถใช้ธง Secure เมื่อตั้งค่าคุกกี้ คุกกี้จะถูกส่งผ่านช่องทางที่เข้ารหัสเท่านั้น เช่น การเชื่อมต่อ SSL

การเขียนสคริปต์ข้ามไซต์

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

ภาษาสคริปต์ เช่น Javascript ได้รับอนุญาตให้อ่านค่าคุกกี้และส่งไปยังเซิร์ฟเวอร์ที่กำหนดเองได้

สมมติว่าเว็บไซต์มีข้อผิดพลาดการเขียนสคริปต์ข้ามไซต์ แฮกเกอร์สามารถแทรกโค้ดที่เป็นอันตรายได้ เช่น:

Web11: คุกกี้ HTTP และปัญหาด้านความปลอดภัยบางประการ

เมื่อเหยื่อคลิกที่ลิงค์ด้านบน เบราว์เซอร์จะรันสคริปต์ในแอตทริบิวต์ onclick: ส่งคุกกี้ของเหยื่อไปยังเซิร์ฟเวอร์ attacker.com

การเขียนสคริปต์ข้ามไซต์เป็นหนึ่งในช่องโหว่ทั่วไปของเว็บไซต์ (อันดับที่สามใน 10 ช่องโหว่ที่พบบ่อยที่สุดในปี 2013 - ตาม OWASP)

ความเสี่ยงของช่องโหว่นี้สามารถจำกัดได้โดยการตั้งค่าสถานะ HttpOnly สำหรับคุกกี้ ในเวลานั้น คุกกี้จะไม่สามารถเข้าถึงได้ด้วยภาษาสคริปต์

การปลอมแปลงคำขอข้ามไซต์

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

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

ตัวอย่างเช่น เหยื่อ Bob กำลังทำธุรกรรมบนเว็บไซต์ของธนาคาร X บางแห่ง Fred เป็นผู้โจมตี ผู้ชายคนนี้รู้ว่าเว็บไซต์ของธนาคาร X ทำงานอย่างไร เมื่อเขาต้องการโอนเงินจากบัญชี A ไปยังบัญชี B ดังนี้:

http://bank.example.com/withdraw?account=accountA&amount=100&for=accountB

เขาจะส่งข้อความที่เป็นอันตรายให้บ๊อบ

หากธนาคาร X เก็บข้อมูลการตรวจสอบผู้ใช้ไว้ในคุกกี้ และ Bob คลิกลิงก์ด้านบน เงินของ Bob จะถูกโอนไปที่ Fred

เพื่อจำกัดความเสี่ยงนี้ คุณสามารถตั้งค่าพารามิเตอร์ Expires สำหรับคุกกี้ได้

4. บทสรุป

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


คำแนะนำจาก AZ เกี่ยวกับวิธีติดตั้ง Windows 10 บิวด์ 14393.222

คำแนะนำจาก AZ เกี่ยวกับวิธีติดตั้ง Windows 10 บิวด์ 14393.222

ล่าสุด Microsoft เปิดตัวการอัปเดตสะสมล่าสุดสำหรับผู้ใช้พีซี Windows 10 ที่เรียกว่า Build 14393.222 การอัปเดตนี้เผยแพร่สำหรับ Windows 10 โดยส่วนใหญ่จะแก้ไขจุดบกพร่องตามคำติชมของผู้ใช้ และปรับปรุงประสบการณ์ด้านประสิทธิภาพของระบบปฏิบัติการ

ปกป้องเครือข่ายคอมพิวเตอร์ของคุณด้วยโฮสต์ Bastion ในเวลาเพียง 3 ขั้นตอน

ปกป้องเครือข่ายคอมพิวเตอร์ของคุณด้วยโฮสต์ Bastion ในเวลาเพียง 3 ขั้นตอน

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

วิธีสร้างคีย์ Windows หากไม่มีแป้นพิมพ์ของคุณ

วิธีสร้างคีย์ Windows หากไม่มีแป้นพิมพ์ของคุณ

หากคุณต้องการใช้แป้นพิมพ์คลาสสิกรุ่นเก่า เช่น IBM Model M ที่ไม่มีคีย์ Windows มาให้ มีวิธีง่ายๆ ในการเพิ่มคีย์เพิ่มเติมโดยการยืมคีย์ที่คุณไม่ได้ใช้บ่อย

3 วิธีในการล้างบันทึกเหตุการณ์ทั้งหมดใน Windows 10 อย่างรวดเร็ว

3 วิธีในการล้างบันทึกเหตุการณ์ทั้งหมดใน Windows 10 อย่างรวดเร็ว

บางครั้งคุณอาจต้องลบบันทึกเหตุการณ์เก่าทั้งหมดพร้อมกัน ในคู่มือนี้ Quantrimang.com จะแสดง 3 วิธีในการลบบันทึกเหตุการณ์ทั้งหมดใน Windows 10 Event Viewer อย่างรวดเร็ว

วิธี IP ปลอมช่วยให้คุณเข้าถึงโดยไม่ระบุชื่อ

วิธี IP ปลอมช่วยให้คุณเข้าถึงโดยไม่ระบุชื่อ

ในบทความก่อนหน้านี้หลายบทความ เราได้กล่าวไว้ว่าการไม่เปิดเผยตัวตนทางออนไลน์เป็นสิ่งสำคัญอย่างยิ่ง ข้อมูลส่วนตัวรั่วไหลทุกปี ทำให้การรักษาความปลอดภัยออนไลน์มีความจำเป็นมากขึ้น นั่นคือเหตุผลที่เราควรใช้ที่อยู่ IP เสมือน ด้านล่างนี้เราจะเรียนรู้เกี่ยวกับวิธีการสร้าง IP ปลอม!

วิธีสร้างโหมดพื้นหลังโปร่งใสบน Windows 10

วิธีสร้างโหมดพื้นหลังโปร่งใสบน Windows 10

WindowTop เป็นเครื่องมือที่มีความสามารถในการหรี่หน้าต่างแอปพลิเคชันและโปรแกรมทั้งหมดที่ทำงานบนคอมพิวเตอร์ Windows 10 หรือคุณสามารถใช้อินเทอร์เฟซพื้นหลังสีเข้มบน windows ได้

วิธีปิดแถบภาษาบนทาสก์บาร์ของ Windows 8

วิธีปิดแถบภาษาบนทาสก์บาร์ของ Windows 8

แถบภาษาบน Windows 8 เป็นแถบเครื่องมือภาษาขนาดเล็กที่ออกแบบมาเพื่อแสดงบนหน้าจอเดสก์ท็อปโดยอัตโนมัติ อย่างไรก็ตาม หลายๆ คนต้องการซ่อนแถบภาษานี้บนทาสก์บาร์

วิธีการตั้งค่า WEP, WPA, WPA2 สำหรับเราเตอร์ Linksys

วิธีการตั้งค่า WEP, WPA, WPA2 สำหรับเราเตอร์ Linksys

การเชื่อมต่อไร้สายถือเป็นสิ่งจำเป็นในปัจจุบัน และด้วยเหตุนี้ การรักษาความปลอดภัยแบบไร้สายจึงถือเป็นสิ่งสำคัญในการรับรองความปลอดภัยในเครือข่ายภายในของคุณ

เคล็ดลับในการปรับความเร็วการเชื่อมต่ออินเทอร์เน็ตจาก Linksys ให้เหมาะสม

เคล็ดลับในการปรับความเร็วการเชื่อมต่ออินเทอร์เน็ตจาก Linksys ให้เหมาะสม

การเพิ่มความเร็วอินเทอร์เน็ตให้สูงสุดถือเป็นสิ่งสำคัญในการเพิ่มประสิทธิภาพการเชื่อมต่อเครือข่ายของคุณ คุณสามารถมีความบันเทิงและประสบการณ์การทำงานที่ดีที่สุดโดยใช้คอมพิวเตอร์ ทีวีที่เชื่อมต่ออินเทอร์เน็ต เครื่องเล่นเกม ฯลฯ

เคล็ดลับในการแสดงการแจ้งเตือนบนหน้าจอเข้าสู่ระบบ Windows 10

เคล็ดลับในการแสดงการแจ้งเตือนบนหน้าจอเข้าสู่ระบบ Windows 10

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