เข้าใจเรื่อง CORS และการจัดการด้าน Security CORS คืออะไร?

เมื่อไหร่ก็ตามที่คุณทำงานกับ Web development คำว่า "CORS" หรือ "Cross-Origin Resource Sharing" จะโผล่มาให้คุณเห็นอยู่เสมอ CORS เป็นกลไกหนึ่งที่เบราว์เซอร์ใช้เพื่อควบคุมการเข้าถึงทรัพยากรที่อยู่บนโดเมนต่าง ๆ กัน อย่างเช่น เมื่อหน้าเว็บหนึ่งที่โฮสต์บน domainA.com
พยายามร้องขอทรัพยากร (เช่น API หรือไฟล์ JSON) จาก domainB.com
เบราว์เซอร์จะตรวจสอบสิทธิ์การเข้าถึงตามข้อกำหนดของ CORS
ทำไม CORS ถึงสำคัญในด้าน Security?
CORS ถูกสร้างขึ้นมาเพื่อป้องกันการโจมตีที่เรียกว่า "Cross-Site Request Forgery" (CSRF) และยังช่วยให้ผู้พัฒนาสามารถควบคุมได้ว่าบริการของพวกเขาจะให้ใครเข้าถึงบ้าง บางครั้งเราอยากจำกัดให้เฉพาะโดเมนที่เราไว้ใจเท่านั้นที่เข้าถึง API ของเราได้ การจัดการ CORS ที่ถูกต้องจะช่วยป้องกันไม่ให้โดเมนที่ไม่รู้จักหรือโดเมนที่เราไม่ต้องการสามารถเข้าถึงข้อมูลหรือบริการที่อ่อนไหว
การตั้งค่า CORS อย่างไรให้ปลอดภัย?
การตั้งค่า CORS อย่างไม่ระมัดระวังอาจเป็นการเปิดช่องโหว่ด้าน Security ได้ ดังนั้นเราต้องมั่นใจว่าคอนฟิกของเราปลอดภัยจริง ๆ นี่คือเคล็ดลับบางประการ:
- จำกัด Origin ที่อนุญาต: หลีกเลี่ยงการตั้งค่า
Access-Control-Allow-Origin: *
เพราะการอนุญาตทุกโดเมนเข้าถึงข้อมูลของเราเป็นเรื่องอันตราย เราควรระบุเฉพาะโดเมนที่เราเชื่อถือได้เท่านั้น เช่นAccess-Control-Allow-Origin: https://trusted-site.com
- ตรวจสอบ Headers และ Methods: ควบคุมให้ถูกต้องว่า Headers และ Methods ใดที่อนุญาต เพราะบางทีการเปิดให้ใช้ Method เช่น
PUT
หรือDELETE
อาจทำให้เกิดความเสี่ยงถ้าเราไม่ได้ตรวจสอบหรือยืนยันสิทธิ์ให้ดี - ไม่เชื่อถือ Credential Requests จากทุก Origin: ถ้า API ของคุณมีการใช้ Authentication หรือ Cookies ร่วมกับ CORS ต้องตั้ง
Access-Control-Allow-Credentials
ให้เฉพาะกับ Origin ที่เชื่อถือได้ หลีกเลี่ยงการตั้งเป็นtrue
โดยไม่ระบุ Origin เพราะนั่นจะเป็นการเปิดประตูให้ผู้โจมตีจากทุกที่เข้าถึงข้อมูลส่วนตัวได้
ข้อควรระวังอื่น ๆ
แม้ว่า CORS จะช่วยแก้ปัญหาเรื่องการควบคุมการเข้าถึงจาก Cross-Origin ได้ดี แต่การพึ่งพา CORS อย่างเดียวอาจไม่เพียงพอ เราควร:
- ใช้ Authentication ที่แข็งแรง: ควรมีการตรวจสอบสิทธิ์ที่แน่นหนาอยู่เสมอ
- วางแผน Security ทุกจุด: ต้องคิดถึงทุกขั้นตอนของแอปพลิเคชัน ตั้งแต่ input validation ไปจนถึงการป้องกัน XSS และ SQL Injection
CORS ไม่ใช่ทั้งหมดของ Security แต่เป็นหนึ่งในส่วนสำคัญที่ช่วยให้การเข้าถึงทรัพยากรในระบบมีความปลอดภัยมากขึ้น ถ้าเราตั้งค่าอย่างเหมาะสม CORS ก็จะเป็นด่านแรกที่ช่วยป้องกันการโจมตีจากภายนอกได้อย่างมีประสิทธิภาพ
สรุป
การจัดการ CORS อย่างถูกต้องเป็นเรื่องที่สำคัญไม่เพียงแต่ในแง่ของการให้ผู้ใช้เข้าถึง API ได้เท่านั้น แต่ยังเป็นเรื่องของการรักษาความปลอดภัยของข้อมูลอีกด้วย ถ้าคุณเพิ่งเริ่มต้นกับ CORS หรือยังไม่แน่ใจเรื่องการตั้งค่า ก็อย่าลืมระมัดระวัง และตรวจสอบทุกครั้งเพื่อให้มั่นใจว่าระบบของคุณจะปลอดภัยจากการโจมตีที่อาจเกิดขึ้นได้