2013-07-22 10 views
9

मैं क्रोम एक्सटेंशन लिख रहा हूं जिसमें सामग्री सुरक्षा नीति के लिए श्वेतसूची में दो डोमेन होने की आवश्यकता है। मैंने आधिकारिक दस्तावेज़ों को देखा है, लेकिन मुझे अभी भी उचित वाक्यविन्यास का पता लगाना प्रतीत नहीं होता है।सामग्री सुरक्षा नीति में व्हाइटलिस्ट एकाधिक डोमेन

निम्नलिखित काम करने के लिए प्रतीत नहीं होता:

"content_security_policy": "script-src 'self' https://foo.com https://example.com; object-src 'self'" 

संपादित करें:

दोनों मेरी सामग्री स्क्रिप्ट और मेरे पॉपअप, तथापि, न पहुँच सकते हैं foo.com तक पहुँचने में सक्षम हैं example.com ।

क्रोम एक्सटेंशन सीएसपी में एकाधिक स्रोतों को श्वेतसूची में रखने में सक्षम हैं?

+0

सामग्री स्क्रिप्ट एक्सटेंशन के सीएसपी से प्रभावित नहीं हैं, लेकिन पृष्ठ के द्वारा। –

+0

मेरे उत्तर को बड़े पैमाने पर संपादित किया; कृपया सत्यापित करें कि मेरा उदाहरण एक्सटेंशन आपके लिए काम करता है, और आप मेरे उत्तर में मौजूद किसी भी गलतियों को नहीं कर रहे हैं। – apsillers

+0

क्या आप वास्तव में 'example.com' तक पहुंचने की कोशिश कर रहे हैं? वास्तविक 'https: // example.com' में दो समस्याएं हैं: सबसे पहले, यह' https: // example.iana.org/'पर रीडायरेक्ट करता है, और दूसरा, यह प्रमाणपत्र का उपयोग करता है जो उसके डोमेन के लिए उपयुक्त नहीं है, जिससे क्रोम ब्लॉक हो जाता है यह। (जब आप यूआरएल में टाइप करते हैं तो आपको निश्चित रूप से एक चेतावनी स्क्रीन मिलती है। मुझे यकीन नहीं है कि यह स्क्रिप्ट संसाधन अनुरोधों को कैसे प्रबंधित करता है, लेकिन मुझे लगता है कि यह उन्हें अवरुद्ध करता है।) – apsillers

उत्तर

10

सीएसपी के बारे में मुझे क्या पता है, यह वाक्य रचनात्मक रूप से सही दिखता है। HTML5 Rocks article on CSP आपके वाक्यविन्यास से सहमत है, कह रहा है:

script-src https://host1.com https://host2.com दोनों उत्पत्ति को मान्य के रूप में सही ढंग से निर्दिष्ट करेगा।

हालांकि, अपने समस्या हो सकती है, जिन्होंने:

  1. यह सीएसपी disallows all subdomains, www.foo.com और www.example.com भी शामिल है। आप उन सबडोमेन होस्टनामों को स्पष्ट रूप से जोड़ सकते हैं, या आप सभी सबडोमेन को अनुमति देने के लिए https://*.foo.com का उपयोग कर सकते हैं।

  2. यदि आपकी कोई भी स्क्रिप्ट अनुरोध गैर-अनुमत डोमेन पर रीडायरेक्ट करता है, तो अनुरोध विफल हो जाएगा। उदाहरण के लिए, यदि https://example.com/foo.js एक 301 या 302 रीडायरेक्ट के https://notpermitted.com/foo.js (नहीं-अनुमति दी मूल) या https://www.example.com/foo.js (जिनकी अनुमति नहीं उप डोमेन) के साथ प्रतिक्रिया करता है, अनुरोध according to the spec असफल हो जायेगी:

    जब भी उपयोगकर्ता एजेंट यूआरआई को हासिल करेगा (रीडायरेक्ट) निम्नलिखित सहित ... अगर यूआरआई अनुमति स्क्रिप्ट स्रोतों से मेल नहीं खाता, उपयोगकर्ता एजेंट कार्य करना चाहिए जैसे कि वह एक खाली HTTP 400 प्रतिक्रिया प्राप्त किया था ...

संपादित करें:

बस पुष्टि करने के लिए, हाँ, क्रोम एक्सटेंशन एकाधिक HTTPS उत्पत्ति को श्वेतसूची में डाल सकते हैं। आप परीक्षण करने के लिए एक सरल विस्तार का निर्माण कर सकते इस:

manifest.json

{ 
    "name":"CSP Test", 
    "version":"1.0", 
    "manifest_version":2, 
    "browser_action":{ 
     "default_popup":"csp_test.html" 
    }, 
    "content_security_policy": "script-src 'self' https://www.iana.org https://ajax.googleapis.com; object-src 'self'" 
} 

csp_test.html

<script src="https://www.iana.org/_js/2013.1/jquery.js"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script> 
<script src="csp_test.js"></script> 

csp_test.js

alert(jQuery) 
alert(jQuery.ui) 

यह एक्सटेंशन दूरस्थ डोमेन से jQuery और jQuery UI को लोड करता है।यदि आप सीएसपी से मूल को हटाते हैं, तो आपको एक "undefined" चेतावनी दिखाई देगी जो संकेत देती है कि पुस्तकालयों में से एक लोड होने में विफल रहा है।

+0

सभी मदद के लिए बहुत बहुत धन्यवाद। जिस डोमेन से मैं संपर्क करने का प्रयास कर रहा था, उसके पास कुछ अजीब रीडायरेक्ट नियम थे जो कुछ शर्तों के तहत HTTP लागू कर रहे थे। –

+0

बहुत अंतर्दृष्टि जवाब! – fegemo

संबंधित मुद्दे