คำถามนี้เกี่ยวกับการป้องกันการโจมตีด้วยการปลอมแปลงคำขอข้ามไซต์เท่านั้น
โดยเฉพาะเกี่ยวกับ: การป้องกันผ่านส่วนหัว Origin (CORS) ดีเท่ากับการป้องกันผ่านโทเค็น CSRF หรือไม่?
ตัวอย่าง:
- อลิซเข้าสู่ระบบ (โดยใช้คุกกี้) ด้วยเบราว์เซอร์ของเธอไปที่ " https://example.com " ฉันคิดว่าเธอใช้เบราว์เซอร์ที่ทันสมัย
- อลิซไปที่ " https://evil.com " และโค้ดฝั่งไคลเอ็นต์ของ evil.com ดำเนินการขอ " https://example.com " (สถานการณ์ CSRF แบบคลาสสิก)
ดังนั้น:
- หากเราไม่ตรวจสอบส่วนหัว Origin (ฝั่งเซิร์ฟเวอร์) และไม่มีโทเค็น CSRF เรามีช่องโหว่ด้านความปลอดภัย CSRF
- หากเราตรวจสอบโทเค็น CSRF แสดงว่าเราปลอดภัย (แต่น่าเบื่อเล็กน้อย)
- หากเราตรวจสอบส่วนหัว Origin คำขอจากโค้ดฝั่งไคลเอ็นต์ของ evil.com ควรถูกบล็อกเช่นเดียวกับที่ทำเมื่อใช้โทเค็น CSRF - ยกเว้นหากเป็นไปได้ที่โค้ดของ evil.com จะตั้งค่าส่วนหัว Origin
ฉันรู้ว่าสิ่งนี้ไม่ควรเป็นไปได้กับ XHR (ดูเช่นความปลอดภัยสำหรับการแบ่งปันทรัพยากรข้ามแหล่งกำเนิด ) อย่างน้อยก็ไม่ถ้าเราเชื่อมั่นว่าข้อมูลจำเพาะ W3C จะถูกนำไปใช้อย่างถูกต้องในเบราว์เซอร์สมัยใหม่ทั้งหมด (เราทำได้ไหม)
แต่คำขอประเภทอื่น ๆ เช่นส่งแบบฟอร์มล่ะ? กำลังโหลดแท็ก script / img / ... ? หรือวิธีอื่นใดที่เพจสามารถใช้เพื่อสร้างคำขอ (ตามกฎหมาย) ได้? หรือบางคนอาจรู้จักแฮ็ค JS?
หมายเหตุ: ฉันไม่ได้พูดถึง
- แอปพลิเคชันเนทีฟ
- เบราว์เซอร์ที่มีการจัดการ
- ข้อบกพร่องการเขียนสคริปต์ข้ามไซต์ในหน้าของ example.com
- ...