CSRF หรือ Cross-Site Request Forgery เป็นช่องโหว่ของเว็บไซต์ที่ผู้โจมตีสามารถทำให้การดำเนินการเกิดขึ้นในเซสชันของเหยื่อบนเว็บไซต์อื่น สิ่งหนึ่งที่ทำให้ CSRF มีความเสี่ยงมากคือไม่จำเป็นต้องมีการโต้ตอบกับผู้ใช้ด้วยซ้ำ ทั้งหมดที่จำเป็นสำหรับเหยื่อในการดูหน้าเว็บที่มีการใช้ประโยชน์ในนั้น
เคล็ดลับ: โดยทั่วไป CSRF จะออกเสียงทั้งตัวอักษรทีละตัวอักษรหรือว่า "sea surf"
การโจมตี CSRF ทำงานอย่างไร
การโจมตีเกี่ยวข้องกับผู้โจมตีที่สร้างเว็บไซต์ที่มีวิธีการขอบนเว็บไซต์อื่น การดำเนินการนี้อาจต้องใช้การโต้ตอบกับผู้ใช้ เช่น ให้ผู้ใช้กดปุ่ม แต่อาจไม่มีการโต้ตอบด้วย ใน JavaScript มีวิธีทำให้การกระทำเกิดขึ้นโดยอัตโนมัติ ตัวอย่างเช่น ผู้ใช้จะมองไม่เห็นภาพขนาดศูนย์คูณศูนย์ แต่สามารถกำหนดค่าได้ ดังนั้น “src” จึงส่งคำขอไปยังเว็บไซต์อื่น
JavaScript เป็นภาษาฝั่งไคลเอ็นต์ ซึ่งหมายความว่าโค้ด JavaScript ถูกเรียกใช้ในเบราว์เซอร์มากกว่าบนเว็บเซิร์ฟเวอร์ ด้วยข้อเท็จจริงนี้ คอมพิวเตอร์ที่ส่งคำขอ CSRF จึงเป็นคอมพิวเตอร์ของเหยื่อ ขออภัย นี่หมายความว่าคำขอนั้นทำขึ้นด้วยการอนุญาตทั้งหมดที่ผู้ใช้มี เมื่อเว็บไซต์โจมตีหลอกล่อให้เหยื่อส่งคำขอ CSRF แล้ว คำขอนั้นก็แยกไม่ออกจากผู้ใช้ที่ส่งคำขอตามปกติ
CSRF เป็นตัวอย่างของ “รองผู้โจมตีที่สับสน” ต่อเว็บเบราว์เซอร์ เนื่องจากเบราว์เซอร์ถูกหลอกให้ใช้งานโดยผู้โจมตีโดยไม่มีสิทธิ์เหล่านั้น สิทธิ์เหล่านี้เป็นเซสชันและโทเค็นการตรวจสอบสิทธิ์ของคุณไปยังเว็บไซต์เป้าหมาย เบราว์เซอร์ของคุณรวมรายละเอียดเหล่านี้ไว้ในคำขอโดยอัตโนมัติ
การโจมตี CSRF ค่อนข้างซับซ้อนในการจัด ก่อนอื่น เว็บไซต์เป้าหมายต้องมีแบบฟอร์มหรือ URL ที่มีผลข้างเคียง เช่น การลบบัญชีของคุณ ผู้โจมตีจำเป็นต้องสร้างคำขอเพื่อดำเนินการตามที่ต้องการ สุดท้าย ผู้โจมตีจำเป็นต้องให้เหยื่อโหลดหน้าเว็บที่มีช่องโหว่ในขณะที่ลงชื่อเข้าใช้เว็บไซต์เป้าหมาย
เพื่อป้องกันปัญหา CSRF สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือรวมโทเค็น CSRF โทเค็น CSRF เป็นสตริงที่สร้างแบบสุ่มซึ่งตั้งค่าเป็นคุกกี้ ค่านี้จะต้องรวมอยู่ในการตอบกลับทุกครั้งควบคู่ไปกับส่วนหัวของคำขอซึ่งรวมถึงค่า แม้ว่าการโจมตี CSRF จะรวมคุกกี้ได้ แต่ก็ไม่มีทางที่จะกำหนดมูลค่าของโทเค็น CSRF เพื่อตั้งค่าส่วนหัวได้ ดังนั้นการโจมตีจะถูกปฏิเสธ