เหตุผลที่ดีสำหรับการรักษาความปลอดภัย - นี้สามารถป้องกันCSRFโจมตีเพราะส่วนหัวนี้ไม่สามารถเพิ่มการร้องขอ AJAX ข้ามโดเมนโดยปราศจากความยินยอมของเซิร์ฟเวอร์ผ่านทางธ
เฉพาะส่วนหัวต่อไปนี้ได้รับอนุญาตข้ามโดเมน:
- ยอมรับ
- ยอมรับภาษา
- เนื้อหาภาษา
- ล่าสุดเหตุการณ์-ID
- ชนิดของเนื้อหา
ผู้อื่นทำให้เกิดคำขอ "การบินล่วงหน้า" ที่จะออกในเบราว์เซอร์ที่รองรับ CORS
หากไม่มี CORS จะไม่สามารถเพิ่มลงX-Requested-With
ในคำขอ XHR ข้ามโดเมนได้
หากเซิร์ฟเวอร์กำลังตรวจสอบว่าส่วนหัวนี้มีอยู่จะรู้ว่าคำขอไม่ได้เริ่มต้นจากโดเมนของผู้โจมตีที่พยายามส่งคำขอในนามของผู้ใช้ด้วย JavaScript นอกจากนี้ยังตรวจสอบว่าคำขอไม่ได้โพสต์จากแบบฟอร์ม HTML ปกติซึ่งยากต่อการตรวจสอบว่าไม่ได้ข้ามโดเมนโดยไม่ต้องใช้โทเค็น (อย่างไรก็ตามการตรวจสอบOrigin
ส่วนหัวอาจเป็นตัวเลือกในเบราว์เซอร์ที่รองรับแม้ว่าคุณจะทำให้เบราว์เซอร์เก่ามีความเสี่ยงก็ตาม)
ค้นพบการเลี่ยงผ่านแฟลชใหม่
คุณอาจต้องการที่จะรวมนี้กับโทเค็นเพราะแฟลชทำงานบน Safari บน OSX สามารถตั้งค่าส่วนหัวนี้ว่ามีขั้นตอนการเปลี่ยนเส้นทาง ปรากฏว่าใช้งานได้กับ Chromeแต่ได้รับการแก้ไขแล้ว รายละเอียดเพิ่มเติมที่นี่รวมถึงเวอร์ชันอื่น ๆ ที่ได้รับผลกระทบ
OWASP แนะนำให้รวมสิ่งนี้กับเช็ค Origin และ Referer :
เทคนิคการป้องกันนี้ถูกกล่าวถึงโดยเฉพาะในหัวข้อ 4.3 ของการป้องกันที่แข็งแกร่งสำหรับการปลอมแปลงคำขอข้ามไซต์ อย่างไรก็ตามการข้ามการป้องกันนี้โดยใช้ Flash ได้รับการบันทึกเป็นช่วงต้นปี 2008 และอีกครั้งในปี 2015 โดย Mathias Karlsson เพื่อใช้ประโยชน์จากข้อบกพร่อง CSRF ใน Vimeo แต่เราเชื่อว่าการโจมตีด้วยแฟลชไม่สามารถหลอกลวงส่วนหัวของแหล่งกำเนิดสินค้าหรือผู้อ้างอิงได้ดังนั้นโดยการตรวจสอบทั้งคู่เราเชื่อว่าการรวมกันของการตรวจสอบนี้จะช่วยป้องกันการโจมตีผ่านทาง CSRF ของ Flash (หมายเหตุ: หากใครสามารถยืนยันหรือปฏิเสธความเชื่อนี้โปรดแจ้งให้เราทราบเพื่อให้เราสามารถอัปเดตบทความนี้)
อย่างไรก็ตามด้วยเหตุผลที่กล่าวถึงการตรวจสอบ Origin อาจเป็นเรื่องยุ่งยาก
ปรับปรุง
เขียนเพิ่มเติมในเชิงลึกเกี่ยวกับการโพสต์บล็อกธ , CSRF และ X-ขอกับที่นี่