ควบคุมฟีเจอร์ของเบราว์เซอร์ด้วยนโยบายสิทธิ์

จัดการวิธีที่หน้าเว็บและ iframe ของบุคคลที่สามในหน้าเว็บของคุณมีสิทธิ์เข้าถึงฟีเจอร์ของเบราว์เซอร์

Kevin K. Lee
Kevin K. Lee

นโยบายสิทธิ์ ซึ่งเดิมเรียกว่านโยบายฟีเจอร์ อนุญาตให้นักพัฒนาซอฟต์แวร์ ควบคุมฟีเจอร์ของเบราว์เซอร์ที่พร้อมใช้งานสำหรับหน้าเว็บ, iframe และ ทรัพยากรย่อย โดยการประกาศชุดนโยบายให้เบราว์เซอร์บังคับใช้ นโยบายเหล่านี้มีผลกับต้นทางที่ระบุไว้ในรายการต้นทางของส่วนหัวการตอบกลับ รายการต้นทางอาจมีต้นทางเดียวกันและต้นทางข้าม และช่วยให้ นักพัฒนาแอปควบคุมการเข้าถึงฟีเจอร์ของเบราว์เซอร์ของบุคคลที่หนึ่งและบุคคลที่สามได้

ผู้ใช้มีสิทธิ์ตัดสินใจขั้นสุดท้ายในการอนุญาตให้เข้าถึงฟีเจอร์ที่มีประสิทธิภาพมากขึ้น และต้องให้สิทธิ์อย่างชัดเจนโดยยอมรับข้อความแจ้ง

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

การเปลี่ยนแปลงนโยบายสิทธิ์

ก่อนหน้านี้ Permissions Policy มีชื่อว่า Feature Policy แนวคิดหลักยังคงเหมือนเดิม แต่มีการเปลี่ยนแปลงที่สำคัญบางอย่างพร้อมกับการเปลี่ยนชื่อ

การใช้งานฟิลด์ที่มีโครงสร้าง

ฟิลด์ที่มีโครงสร้างมีชุดโครงสร้างข้อมูลทั่วไปเพื่อกำหนดมาตรฐานการแยกวิเคราะห์และการซีเรียลไลซ์ค่าฟิลด์ส่วนหัว HTTP ดูข้อมูลเพิ่มเติมเกี่ยวกับ Structured Fields ได้จากบล็อกโพสต์ของ Fastly เรื่อง "Improving HTTP with structured header fields"

เก่า
  geolocation 'self' https://example.com; camera 'none'

ก่อนหน้านี้ใช้ Feature Policy

ใหม่
  geolocation=(self "https://example.com"), camera=()

ตอนนี้มีนโยบายสิทธิ์แล้ว

รวมส่วนหัวกับแอตทริบิวต์ allow ของ iframe

นโยบายฟีเจอร์ช่วยให้คุณเพิ่มฟีเจอร์ลงในเฟรมข้ามต้นทางได้โดยการเพิ่มต้นทางลงในรายการต้นทางของส่วนหัว หรือเพิ่มแอตทริบิวต์ allow ลงในแท็ก iframe เมื่อใช้นโยบายสิทธิ์ หากคุณเพิ่มเฟรมข้ามต้นทางลงในรายการต้นทาง แท็ก iframe สำหรับต้นทางนั้นต้องมีแอตทริบิวต์ allow หากการตอบกลับไม่มีส่วนหัว Permissions Policy ระบบจะถือว่ารายการต้นทางมีค่าเริ่มต้นเป็น * การเพิ่มแอตทริบิวต์ allow ลงใน iframe จะช่วยให้เข้าถึงฟีเจอร์ได้

ดังนั้น เราขอแนะนำให้นักพัฒนาแอปตั้งค่าส่วนหัว Permissions Policy อย่างชัดเจนในการตอบกลับ เพื่อให้ iframe แบบข้ามต้นทางที่ไม่ได้อยู่ในรายการต้นทางถูกบล็อกไม่ให้เข้าถึงฟีเจอร์นี้ แม้ว่าจะมี allow อยู่ก็ตาม

คุณยังคงใช้นโยบายฟีเจอร์ได้หลังจาก Chrome 88 แต่จะทำหน้าที่เป็นนามแฝงสำหรับนโยบายสิทธิ์ นอกเหนือจากไวยากรณ์แล้ว ตรรกะจะไม่มีความแตกต่างกัน หากใช้ทั้งส่วนหัวของนโยบายสิทธิ์และนโยบายฟีเจอร์ร่วมกัน ส่วนหัว Permissions-Policy จะมีลำดับความสำคัญสูงกว่า และจะเขียนทับค่าที่ระบุโดยส่วนหัว Feature-Policy

ฉันจะใช้นโยบายสิทธิ์ได้อย่างไร

ภาพรวมโดยย่อ

ก่อนจะเจาะลึก เรามาดูสถานการณ์ทั่วไปที่คุณเป็นเจ้าของเว็บไซต์และต้องการควบคุมวิธีที่เว็บไซต์และโค้ดของบุคคลที่สามใช้ฟีเจอร์ของเบราว์เซอร์กันก่อน

  • เว็บไซต์ของคุณคือ https://your-site.example
  • เว็บไซต์ของคุณฝัง iframe จากต้นทางเดียวกัน (https://your-site.example)
  • เว็บไซต์ของคุณฝัง iframe จาก https://trusted-site.example ที่คุณเชื่อถือ
  • เว็บไซต์ของคุณยังแสดงโฆษณาที่ https://ad.example แสดงด้วย
  • คุณต้องการอนุญาตตำแหน่งทางภูมิศาสตร์สำหรับเว็บไซต์ของคุณและเว็บไซต์ที่เชื่อถือได้เท่านั้น ไม่ใช่สำหรับโฆษณา

ในกรณีนี้ ให้ใช้ส่วนหัวต่อไปนี้

Permissions-Policy: geolocation=(self "https://trusted-site.example")

และตั้งค่าแอตทริบิวต์ allow ให้กับแท็ก iframe สำหรับเว็บไซต์ที่เชื่อถือได้อย่างชัดเจน

<iframe src="https://trusted-site.example" allow="geolocation">