เมื่อพัฒนา Web Application ที่ต้องการรักษาความปลอดภัยสูง การป้องกัน CSRF (Cross-Site Request Forgery) ด้วย CSRF Token ทำงานอย่างไร และข้อใดอธิบายถึงข้อจำกัดของวิธีนี้ได้ถูกต้อง?
กCSRF Token เข้ารหัสข้อมูลใน Form ทำให้ข้อมูลที่ส่งไปปลอดภัยจากการดักฟัง
ขCSRF Token ใช้ได้เฉพาะกับ GET Request เท่านั้น ไม่สามารถป้องกัน POST Request ได้
คCSRF Token คือค่าสุ่มที่ Server สร้างและฝังใน Form ตรวจสอบเมื่อรับ Request แต่ยังเสี่ยงหาก XSS สามารถอ่าน Token ได้
งCSRF Token ป้องกันการโจมตีทุกรูปแบบรวมถึง SQL Injection และ XSS
เฉลยอธิบาย
CSRF Token ทำงานโดย Server สร้างค่า Random ที่เชื่อมโยงกับ Session ฝังใน Form เมื่อรับ Request ตรวจสอบว่า Token ตรงกัน ทำให้เว็บไซต์อื่นไม่สามารถสร้าง Request แทนผู้ใช้ได้เพราะไม่รู้ Token ข้อจำกัดสำคัญคือหากแอปพลิเคชันมีช่องโหว่ XSS ผู้โจมตีสามารถใช้ JavaScript อ่าน CSRF Token ได้ ทำให้การป้องกันล้มเหลว ตัวเลือก A ผิดเพราะ CSRF Token ไม่ได้เข้ารหัสข้อมูล, C ผิดเพราะ CSRF Token ป้องกันเฉพาะ CSRF ไม่ใช่ทุกการโจมตี และ D ผิดเพราะ CSRF ส่วนใหญ่ป้องกัน State-Changing Request ที่เป็น POST, PUT, DELETE