นโยบายรักษาความปลอดภัยเนื้อหา

หากคุณไม่คุ้นเคยกับนโยบายรักษาความปลอดภัยเนื้อหา (CSP) ข้อมูลเบื้องต้นเกี่ยวกับการรักษาความปลอดภัยเนื้อหา นโยบายคือจุดเริ่มต้นที่ดี เอกสารดังกล่าวกล่าวถึงมุมมองแพลตฟอร์มเว็บที่กว้างขึ้นของ CSP CSP ของแอป Chrome ไม่ได้มีความยืดหยุ่นมากนัก

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

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

CSP สำหรับแอป Chrome คืออะไร

นโยบายรักษาความปลอดภัยเนื้อหาสำหรับแอป Chrome จำกัดไม่ให้คุณดำเนินการต่อไปนี้

  • คุณไม่สามารถใช้การเขียนสคริปต์ในหน้าในหน้าแอป Chrome ได้ ข้อจำกัดแบนทั้ง <script> บล็อก และเครื่องจัดการเหตุการณ์ (<button onclick="...">)
  • คุณจะอ้างอิงทรัพยากรภายนอกในไฟล์ของแอปใดๆ ไม่ได้ (ยกเว้นวิดีโอและเสียง ) คุณไม่สามารถฝังทรัพยากรภายนอกใน iframe ได้
  • คุณไม่สามารถใช้เมธอดสตริงเป็น JavaScript เช่น eval() และ new Function()

วิธีนี้ใช้ด้วยค่านโยบายต่อไปนี้

default-src 'self';
connect-src * data: blob: filesystem:;
style-src 'self' data: 'unsafe-inline';
img-src 'self' data:;
frame-src 'self' data:;
font-src 'self' data:;
media-src * data: blob: filesystem:;

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

วิธีปฏิบัติตาม CSP

JavaScript และทรัพยากรทั้งหมดควรอยู่ในเครื่อง (ทุกอย่างจะรวมอยู่ในแอป Chrome)

"แล้วยังไงฉันถึง..."

มีความเป็นไปได้มากว่าคุณใช้ไลบรารีที่มีเทมเพลตแล้ว และไลบรารีหลายรายการเหล่านี้ใช้กับ CSP ไม่ได้ นอกจากนี้ คุณอาจต้องการเข้าถึงแหล่งข้อมูลภายนอกในแอป (รูปภาพภายนอก เนื้อหาจากเว็บไซต์)

ใช้ไลบรารีเทมเพลต

ใช้ไลบรารีที่มีเทมเพลตที่คอมไพล์ไว้ เพียงเท่านี้ก็เรียบร้อย คุณยังใช้ไลบรารีที่ ไม่มีการคอมไพล์ล่วงหน้า แต่คุณจะต้องดำเนินการบางอย่างและมีข้อจำกัด

คุณจะต้องใช้แซนด์บ็อกซ์เพื่อแยกเนื้อหาที่ต้องการ "ประเมิน" สิ่งต่างๆ ให้ แซนด์บ็อกซ์จะยกระดับ CSP ในเนื้อหาที่คุณระบุ หากคุณต้องการใช้ Chrome ที่มีประสิทธิภาพอย่างมาก API ในแอป Chrome เนื้อหาในแซนด์บ็อกซ์ของคุณไม่สามารถโต้ตอบกับ API เหล่านี้ได้โดยตรง (โปรดดู เนื้อหาในเครื่องที่เป็นแซนด์บ็อกซ์)

เข้าถึงทรัพยากรระยะไกล

คุณสามารถดึงข้อมูลทรัพยากรระยะไกลผ่าน XMLHttpRequest และแสดงผ่าน blob:, data: หรือ URL filesystem: รายการ (ดูการจัดประเภททรัพยากรภายนอก)

โหลดวิดีโอและเสียงจากบริการระยะไกลได้เนื่องจากมีลักษณะการทำงานสำรองที่ดีเมื่อ ออฟไลน์หรือการเชื่อมต่อไม่เสถียร

ฝังเนื้อหาเว็บ

แทนที่จะใช้ iframe คุณสามารถเรียกไปยัง URL ภายนอกโดยใช้แท็ก WebView ได้ (ดูฝัง หน้าเว็บภายนอก)