จะผ่อนคลายนโยบายความปลอดภัยของเนื้อหาใน Chrome ได้อย่างไร


18

เมื่อเร็ว ๆ นี้บางเว็บไซต์เช่น Facebook ใช้นโยบายความปลอดภัยเนื้อหา (CSP) เพื่อ จำกัด การโหลดสคริปต์จาก "แหล่งที่ไม่น่าเชื่อถือ" ตัวอย่างเช่นเมื่อขอเนื้อหา HTML ของ Facebook (เช่นhttps://www.facebook.com ) การตอบสนอง HTTP ของ Facebook จะมีส่วนหัวการตอบสนองต่อไปนี้:

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

สิ่งนี้มีผลกระทบกับ bookmarklet บางตัวที่ต้องการโหลดและเรียกใช้งานไลบรารี Javascript จากแหล่งที่ไม่น่าเชื่อถือ

ตัวอย่างเช่นเมื่อใดก็ตามที่ฉันพยายามเรียกใช้Show Anchors bookmarkletบนหน้า Facebook การเรียกใช้ bookmarklet นี้ล้มเหลวเนื่องจากพยายามโหลด jQuery จากแหล่งที่ไม่น่าเชื่อถือ ในคอนโซลนักพัฒนาซอฟต์แวร์ของ Chrome จะกล่าวว่า:

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

ฉันพบหน้าเอกสารของ Chrome เกี่ยวกับหัวข้อนี้แล้ว แต่ใช้ได้เฉพาะกับส่วนขยายของ Chromeเท่านั้น

ฉันกำลังมองหาวิธีแก้ปัญหาที่อนุญาตให้ฉัน

  • ทั้งในครั้งเดียวปิดการใช้งาน CSP
  • หรืออนุญาตรายการแหล่งที่เชื่อถือของฉันอย่างถาวร


@Rudie สิ่งนี้จะใช้ได้กับ Chrome Mobile หรือไม่
Michael

@Michael หาก Chrome Mobile รองรับส่วนขยายที่ทันสมัย WeRequest เป็นของใหม่ ฉันไม่ได้ใช้ Chrome Mobile ดังนั้นฉันไม่รู้เลย
Rudie

คำตอบ:


2

วิธีการรับรองโดย Chrome Apps

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

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

คุณจะต้องใช้ sandboxing เพื่อแยกเนื้อหาใด ๆ ที่คุณต้องการทำสิ่ง 'eval' Sandboxing ยก CSP ในเนื้อหาที่คุณระบุ

เนื้อหาท้องถิ่น Sandbox

Sandboxing อนุญาตให้แสดงหน้าที่ระบุในแหล่งกำเนิดที่ไม่ซ้ำแบบ Sandbox หน้าเหล่านี้จะได้รับการยกเว้นจากนโยบายความปลอดภัยของเนื้อหา หน้าแซนด์บ็อกซ์สามารถใช้ iframes, สคริปต์แบบอินไลน์และ eval () (และสองหน้าสุดท้ายเป็นหน้าที่ถูกป้องกัน) นั่นจะแก้ไข 'ไม่ปลอดภัยแบบอินไลน์' และ 'ไม่ปลอดภัย -eval'

  • ใช้สคริปต์แบบอินไลน์ในแซนด์บ็อกซ์
  • รวม sandbox ในไฟล์ Manifest

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

คุณสามารถดึงทรัพยากรระยะไกลผ่านทาง XMLHttpRequest และให้บริการผ่านทาง blob :, data: หรือระบบไฟล์: URL สิ่งนี้ควรแก้ไขปัญหาการดึงข้อมูล jQuery

ความต้องการอย่างชัดแจ้ง

เพื่อให้สามารถข้ามจุดกำเนิดXMLHttpRequestsได้คุณจะต้องเพิ่มสิทธิ์สำหรับโฮสต์ของรีโมต URL

ข้ามจุด XMLHttpRequest

ดึง URL ระยะไกลลงในแอพและใช้เนื้อหาเป็นblob:URL


ฉันไม่คิดว่าคุณสามารถทำสิ่งเหล่านี้ได้ ในการแก้ไขunsafe-evalและunsafe-inlineส่วนหัวการตอบสนองเฉพาะเจ้าของสคริปต์เท่านั้นที่สามารถแก้ไขรหัสหรือหากเป็นในโดเมนสาธารณะคุณสามารถแก้ไขได้ ทั้งหมดนี้อาจเป็นการแก้ไขเพียงครั้งเดียว


hacks

UnsafeWindow

http://wiki.greasespot.net/UnsafeWindow

การฉีดสคริปต์เนื้อหา

http://wiki.greasespot.net/Content_Script_Injection


อย่างไรก็ตามแฮ็กมีข้อเสียเพราะพวกเขารู้ว่าจะทำให้เกิดช่องโหว่ด้านความปลอดภัยในครั้งแรกอย่างแน่นอน


0

คุณสามารถแก้ไขการตั้งค่าเหล่านี้ได้ในแท็บเนื้อหาซึ่งคุณสามารถเข้าถึงได้โดยตรงโดยพิมพ์chrome://settings/contentในแถบที่อยู่ คุณสามารถทำรายการโดเมนที่อนุญาตในบางประเภทเนื้อหา


9
ฉันจะทำสิ่งนี้ได้ที่ไหนและทำอย่างไร? ฉันพยายามเพิ่มเว็บไซต์ของฉันลงใน "ข้อยกเว้นคุกกี้และข้อมูลไซต์" เพื่อไม่ให้เกิดผล ไม่มีการตั้งค่าอื่นใดที่เกี่ยวข้อง
Michael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.