การคลิกจากระยะไกลคือการโจมตีที่เป็นอันตรายซึ่งหลอกลวงให้ผู้ใช้คลิกลิงก์หรือองค์ประกอบ UI ในเว็บไซต์ที่ดูเหมือนว่าน่าเชื่อถือและคุ้นเคย ซึ่งโดยทั่วไปจะดำเนินการโดยการฝังเว็บไซต์ที่เชื่อถือได้บางส่วนหรือทั้งหมดลงในเว็บไซต์ที่เป็นอันตรายโดยใช้ <iframe>
ส่วนหัว X-Frame-Options
(XFO) และคำสั่ง frame-ancestors
ในส่วนหัว Content-Security-Policy
(CSP) สามารถลดการโจมตีด้วยคลิกแจ๊คได้โดยการควบคุมวิธีฝังเว็บไซต์ภายใน <iframe>
สาเหตุที่การตรวจสอบ Lighthouse ไม่สําเร็จ
การตรวจสอบจะผ่านหากตั้งค่าส่วนหัว XFO ด้วย SAMEORIGIN
หรือ DENY
หรือตั้งค่าคำสั่ง frame-ancestors
ในส่วนหัว CSP การตรวจสอบจะดำเนินการไม่สำเร็จหากไม่ได้กำหนดค่านโยบายการควบคุมเฟรมเหล่านี้
วิธีตั้งค่านโยบายการควบคุมเฟรมเพื่อลดการครีกเชอร์
คุณต้องตั้งค่านโยบายการควบคุมเฟรมในส่วนหัว HTTP ของคำขอเอกสารเริ่มต้น ส่วนหัว X-Frame-Options
และคำสั่ง frame-ancestors
ใน Content-Security-Policy
จะไม่ทำงานหากตั้งค่าไว้ในองค์ประกอบ <meta>
ส่วนหัว XFO
การตั้งค่า DENY
หรือ SAMEORIGIN
สำหรับส่วนหัว XFO จะช่วยลดการโจมตีด้วยคลิกแจ๊ค
X-Frame-Options: SAMEORIGIN
X-Frame-Options: DENY
คำสั่ง SAMEORIGIN
อนุญาตให้แสดงหน้าเว็บได้ก็ต่อเมื่อเฟรมบรรพบุรุษทั้งหมดมีต้นทางเดียวกับหน้าเว็บนั้นๆ เท่านั้น ในทางกลับกัน คำสั่ง DENY
จะป้องกันไม่ให้หน้าเว็บแสดงในเฟรม ไม่ว่าต้นทางของเฟรมหลักจะเป็นอย่างไรก็ตาม
ส่วนหัว CSP
คำสั่ง frame-ancestors
ภายในส่วนหัว CSP จะกำหนดว่าเว็บไซต์ใดบ้างที่อาจฝังหน้าเว็บที่ระบุใน <frame>
, <iframe>
, <object>
หรือ <embed>
เช่นเดียวกับ XFO คำสั่ง frame-ancestors
ของ CSP สามารถใช้เพื่อลดการโจมตีด้วยการใช้คลิกไฮแจ็กได้โดยตั้งค่าเป็น self
หรือ none
Content-Security-Policy: frame-ancestors 'self';
Content-Security-Policy: frame-ancestors 'none';
อย่างไรก็ตาม คำสั่ง frame-ancestors
มีความยืดหยุ่นมากกว่า XFO เนื่องจากสามารถตั้งค่าแหล่งที่มาหลักที่เฉพาะเจาะจงซึ่งอาจฝังหน้าเว็บได้ ดังนี้
Content-Security-Policy: frame-ancestors 'self' https://example.com;