0Pricing
HTML Academy · บทเรียน

การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์

จำกัดเนื้อหาที่ฝังด้วย sandbox และ Permissions-Policy

การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์ เป็นบทเรียน HTML Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน HTML Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงต้องใช้เฟรมฝังแบบแซนด์บ็อกซ์

เนื้อหาที่ไม่น่าเชื่อถือในเฟรมฝัง เช่น วิดเจ็ตจากบุคคลที่สาม ตัวอย่าง HTML ที่ผู้ใช้ส่งมา หรือเกมที่ฝังไว้ ไม่ควรมีความสามารถของเบราว์เซอร์อย่างเต็มรูปแบบ แอตทริบิวต์ sandbox จะจำกัดสิ่งที่เฟรมฝังทำได้ เพื่อลดความเสียหายหากพบภายหลังว่าเนื้อหานั้นเป็นอันตราย

แซนด์บ็อกซ์ว่างเปล่า = การจำกัดสูงสุด

<iframe sandbox src="..."> ที่ไม่มีค่าจะใช้ข้อจำกัดทั้งหมด ได้แก่ ไม่อนุญาตให้ใช้สคริปต์ แบบฟอร์ม ป๊อปอัป การนำทางระดับบนสุด และปลั๊กอิน อีกทั้งจะถือว่าอยู่ในต้นทางเฉพาะ ใช้รูปแบบนี้เป็นจุดเริ่มต้น แล้วเพิ่มเฉพาะสิ่งที่เนื้อหาที่ฝังจำเป็นต้องใช้

การเพิ่มความสามารถ

โทเค็นของแซนด์บ็อกซ์จะเปิดใช้ความสามารถเฉพาะบางอย่างอีกครั้ง เช่น sandbox="allow-scripts allow-same-origin" อนุญาตให้เรียกใช้สคริปต์และเข้าถึงต้นทางเดียวกัน โทเค็นแต่ละรายการจะผ่อนคลายข้อจำกัดหนึ่งข้อ จึงควรรวมเฉพาะชุดขั้นต่ำที่เฟรมฝังต้องใช้จริง

<iframe sandbox="allow-scripts allow-same-origin" src="https://embed.example.com/widget"></iframe>

โทเค็นที่ใช้บ่อย

allow-scripts เปิดใช้ JS allow-forms เปิดใช้การส่งแบบฟอร์ม allow-popups เปิดใช้ window.open allow-same-origin ป้องกันไม่ให้ถือว่าเฟรมฝังอยู่ในต้นทางเฉพาะ ซึ่งจำเป็นสำหรับ localStorage allow-top-navigation อนุญาตให้นำทางหน้าต่างหลัก

การผสมผสานที่อันตราย

การใช้ allow-scripts ร่วมกับ allow-same-origin สำหรับเฟรมฝังที่คุณโฮสต์เองด้วย จะทำให้เฟรมฝังเข้าถึงต้นทางของคุณได้อย่างเต็มที่ รวมถึงสามารถลบแซนด์บ็อกซ์ของตัวเองได้ ควรใช้ร่วมกันเฉพาะกับเนื้อหาที่เชื่อถือได้ สำหรับเนื้อหาที่ไม่น่าเชื่อถือ อย่าให้สิทธิ์เข้าถึงต้นทางเดียวกัน

นโยบายสิทธิ์การใช้งาน

นโยบายสิทธิ์การใช้งาน ซึ่งเดิมเรียกว่านโยบายความสามารถ จะควบคุมว่าส่วนติดต่อโปรแกรมของเบราว์เซอร์ใดบ้าง เช่น กล้อง ไมโครโฟน ตำแหน่งทางภูมิศาสตร์ โหมดเต็มหน้าจอ และการเล่นอัตโนมัติ ที่หน้าเว็บและเฟรมฝังใช้ได้ กำหนดที่หน้าหลักด้วย Permissions-Policy: geolocation=() เพื่อบล็อกการระบุตำแหน่งทางภูมิศาสตร์ทุกแห่ง

การให้สิทธิ์แก่เฟรมฝังแต่ละรายการ

แอตทริบิวต์ allow ของเฟรมฝังจะเขียนทับนโยบายของหน้าหลักสำหรับเฟรมฝังนั้น เช่น <iframe allow="camera; microphone"> จะอนุญาตให้เฟรมฝังใช้ส่วนติดต่อโปรแกรมเหล่านั้นได้ แม้ว่านโยบายเริ่มต้นของหน้าหลักจะปฏิเสธก็ตาม

<iframe
  src="https://video-call.example.com"
  allow="camera; microphone; fullscreen"
  sandbox="allow-scripts allow-same-origin">
</iframe>

การระบุสิทธิ์

ข้อกำหนดต่าง ๆ มีรายการที่เปลี่ยนแปลงอยู่เสมอ ได้แก่ กล้อง ไมโครโฟน ตำแหน่งทางภูมิศาสตร์ เครื่องวัดความเร่ง ไจโรสโคป เครื่องวัดสนามแม่เหล็ก การชำระเงิน ยูเอสบี มิดี โหมดเต็มหน้าจอ การเล่นอัตโนมัติ ภาพซ้อนภาพ และอื่น ๆ อีกหลายสิบรายการ ตรวจสอบรายการนี้และปฏิเสธอย่างชัดเจนสำหรับทุกสิ่งที่หน้าเว็บไม่จำเป็นต้องใช้

การรายงานการละเมิดนโยบาย

นโยบายสิทธิ์การใช้งานจะรายงานการละเมิดไปยังปลายทางที่กำหนดค่าไว้ เช่นเดียวกับ report-uri ของ CSP ใช้แนวทางนี้ระหว่างการย้ายระบบ โดยเปิดใช้นโยบายที่เข้มงวด เฝ้าดูสิ่งที่ทำงานผิดพลาด แล้วค่อยผ่อนคลายอย่างมีแบบแผนสำหรับความสามารถที่ถูกต้องตามต้องการ

การแยกต้นทาง

สำหรับหน้าที่มีข้อมูลอ่อนไหว ให้ตั้งค่า Cross-Origin-Opener-Policy: same-origin และ Cross-Origin-Embedder-Policy: require-corp วิธีนี้จะแยกหน้าเว็บออกจากหน้าต่างข้ามต้นทาง ป้องกันการโจมตีแบบจับเวลาที่มีลักษณะเช่น Spectre และเปิดใช้ SharedArrayBuffer

การป้องกันหลายชั้น

แซนด์บ็อกซ์ + นโยบายสิทธิ์การใช้งาน + CSP + COOP/COEP ทำงานเป็นชั้นร่วมกัน แต่ละชั้นป้องกันการโจมตีคนละประเภท การฝังเนื้อหาจากบุคคลที่สามมีความเสี่ยงมากจนมาตรการใดมาตรการหนึ่งไม่เพียงพอ ควรใช้หลายมาตรการร่วมกัน เพื่อให้การหลบเลี่ยงมาตรการหนึ่งถูกตรวจจับโดยอีกมาตรการหนึ่ง

การทดสอบ

ใช้แผงเครือข่ายและแผงปัญหาใน Chrome DevTools เพื่อค้นหาการละเมิดแซนด์บ็อกซ์และสิทธิ์การใช้งาน การละเมิดจำนวนมากไม่แสดงผลใด ๆ เช่น ส่วนติดต่อโปรแกรมส่งคืนค่าไม่กำหนดหรือปฏิเสธคำสัญญา การมีปลายทางรายงานอย่างชัดเจนช่วยค้นหาปัญหาเหล่านี้ในระบบที่ใช้งานจริง

ทดสอบความรู้

เหตุใดการใช้ sandbox="allow-scripts allow-same-origin" ร่วมกันจึงอาจเป็นอันตรายสำหรับเฟรมฝังที่โฮสต์อยู่บนต้นทางของคุณเอง

สรุป

ใช้แซนด์บ็อกซ์กับเฟรมฝังเป็นค่าเริ่มต้น และเพิ่มเฉพาะโทเค็นที่เนื้อหาจำเป็นต้องใช้ หลีกเลี่ยงการให้สิทธิ์เรียกใช้สคริปต์และเข้าถึงต้นทางเดียวกันแก่เนื้อหาที่ไม่น่าเชื่อถือ ใช้นโยบายสิทธิ์การใช้งานเพื่อปฏิเสธส่วนติดต่อโปรแกรมที่มีสิทธิ์สูงทั่วทั้งเว็บไซต์ และใช้แอตทริบิวต์อนุญาตของเฟรมฝังเพื่อให้ข้อยกเว้น ผสานกับ CSP และ COOP/COEP เพื่อสร้างการป้องกันหลายชั้น

คำถามที่พบบ่อย

บทเรียน “การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส HTML Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส HTML Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์”

จำกัดเนื้อหาที่ฝังด้วย sandbox และ Permissions-Policy คุณปฏิบัติ HTML Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน HTML Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน HTML Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน HTML Academy นี้ได้ไหม

ได้ บทเรียน HTML Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Content Security Policy meta http-equiv
  2. XSS ผ่าน innerHTML และวิธีป้องกัน
  3. การทำแซนด์บ็อกซ์ iframe และนโยบายสิทธิ์
  4. HTTPS และความสมบูรณ์ของทรัพยากรย่อย
← กลับไปที่ HTML Academy