1. ทำความเข้าใจว่า CORS เป็นวิธีเฉพาะหน้าที่ใช้ชดเชยข้อบกพร่องในการออกแบบของเบราว์เซอร์

  • CORS (Cross-Origin Resource Sharing) แก้ปัญหาด้านความปลอดภัยที่เกิดจากการใช้ข้อมูลรับรองโดยปริยายในคำขอข้ามต้นทาง
  • พฤติกรรมเริ่มต้นของเบราว์เซอร์ทำให้ผู้ใช้เสี่ยงต่อการโจมตีแบบ XSRF
  • CORS พยายามบรรเทาปัญหาเหล่านี้ แต่มีข้อจำกัดพื้นฐานในแง่ของขอบเขตความปลอดภัย

2. CORS ป้องกันการอ่านผลลัพธ์ของคำขอข้ามต้นทาง แต่ไม่ได้บล็อกตัวคำขอเอง

  • fun-games.example ไม่สามารถอ่านข้อมูลของ your-bank.example ได้ แต่ยังคงส่งคำขอเปลี่ยนแปลงสถานะ เช่น การโอนเงิน ได้
  • ทั้งนี้เป็นเพราะวิธีที่เบราว์เซอร์จัดการคุกกี้และข้อมูลรับรองโดยค่าเริ่มต้น

3. ความปลอดภัยข้ามต้นทางที่มีประสิทธิภาพเริ่มต้นจากการเพิกเฉยต่อข้อมูลรับรองโดยปริยาย

  • ลบหรืออนุญาตอย่างชัดเจนสำหรับคุกกี้และข้อมูลรับรองลักษณะคล้ายกันในคำขอข้ามต้นทาง
  • ใช้ middleware ที่อาศัย header Sec-Fetch-* เพื่อกรองหรือลบคุกกี้ข้ามต้นทาง

4. ข้อมูลรับรองแบบชัดแจ้งเป็นทางเลือกที่ปลอดภัยกว่าข้อมูลรับรองโดยปริยาย

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

5. ใช้คุกกี้ SameSite เพื่อจำกัดการใช้ข้อมูลรับรองข้ามต้นทาง

  • ใช้ SameSite=Lax เพื่อไม่ให้แนบคุกกี้ไปกับคำขอข้ามต้นทางโดยค่าเริ่มต้น
  • หากต้องการนโยบายที่เข้มงวดยิ่งขึ้น ให้เลือก SameSite=Strict แต่ควรทราบว่าอาจกระทบต่อการใช้งาน เช่น ถูกออกจากระบบหลังการนำทางข้ามต้นทาง

6. เลือกใช้นโยบาย CORS ที่เรียบง่ายและปลอดภัย

  • นโยบายพื้นฐาน: Access-Control-Allow-Origin: * และ Access-Control-Allow-Methods: * อนุญาตเฉพาะการเข้าถึงแบบไม่ระบุตัวตน
  • นโยบายนี้ปิดการใช้ข้อมูลรับรองโดยปริยายในคำขอข้ามต้นทาง จึงช่วยปกป้องเว็บไซต์จากการใช้ข้อมูลรับรองผิดวัตถุประสงค์โดยไม่ตั้งใจ

7. อย่าทำให้นโยบาย CORS ซับซ้อนเกินไปเพื่อหวังเรื่องความปลอดภัย

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

8. ทำความเข้าใจถึงกระแสที่กว้างขึ้นในการมุ่งสู่ค่าเริ่มต้นของเว็บที่ปลอดภัยกว่าเดิม

  • เบราว์เซอร์กำลังสำรวจแนวทางอย่าง State Partitioning (Firefox), Tracking Prevention (Safari) และ CHIPS (Chrome) เพื่อแก้ปัญหาข้อมูลรับรองข้ามต้นทาง
  • โครงการริเริ่มเหล่านี้พยายามปรับปรุงความปลอดภัยและความเป็นส่วนตัวของผู้ใช้ โดยจำกัดการแชร์คุกกี้และข้อมูลรับรองระหว่างต้นทาง

9. ตระหนักว่า CORS เป็นโซลูชันที่ยังไม่สมบูรณ์

  • การรองรับย้อนหลังของ CORS เพิ่มความซับซ้อน แต่ก็ยังแก้ปัญหาความปลอดภัยพื้นฐานได้ไม่หมด
  • เบราว์เซอร์กำลังค่อย ๆ นำแนวทางใหม่มาใช้เพื่อลดผลกระทบของปัญหาเหล่านี้ แต่ความคืบหน้ายังไม่สม่ำเสมอ

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น