2011-09-30 10 views
17

क्या मोज़िला CSP डिफ़ॉल्ट रूप से Javascript from a bookmark निष्पादित करने के लिए ब्लॉक करता है?क्या सामग्री सुरक्षा नीति ब्लॉक बुकलेटलेट करता है?

क्या ऐसा करने के लिए इसे कॉन्फ़िगर किया जा सकता है?

+0

बस जिज्ञासा, तुम क्यों बुकमार्कलेट को निष्क्रिय करना चाहते हैं? – ThiefMaster

+0

मैं सिर्फ चिंतित नहीं हूं कि कोई और ऐसा कर सकता है क्योंकि वे वहां वेबपृष्ठ पर जावास्क्रिप्ट इंजेक्शन नहीं लेना चाहते हैं। – PiTheNumber

+2

हमेशा greasemonkey जैसी चीजें हैं। यदि ** उपयोगकर्ता ** निर्णय लेता है कि वह वेबसाइट में जावास्क्रिप्ट इंजेक्ट करना चाहता है जो केवल खुद को प्रभावित करेगा, उसे किसी को भी ऐसा करने से रोकने का अधिकार नहीं है। – ThiefMaster

उत्तर

16

2017 के रूप में, इस सवाल का जवाब अभी भी एक निश्चित "शायद" है - जैसे जब इस उत्तर मूल रूप से 2011 में पोस्ट किया गया specification स्पष्ट रूप से कहते हैं:

नीति एक संसाधन पर लागू के साथ हस्तक्षेप नहीं करना चाहिए एडॉन्स, एक्सटेंशन, या बुकमार्लेट जैसे उपयोगकर्ता-एजेंट सुविधाओं का संचालन। एक बुकमार्कलेट https://addons.mozilla.org/ पर चलेंगे, एक साइट script-src: 'unsafe-inline' बिना एक सख्त सामग्री सुरक्षा नीति है कि:

और यह वास्तव में व्यवहार मैं क्रोम 61 में देखते हैं। फिर भी फ़ायरफ़ॉक्स में 56 बुकमार्लेट इस वेबसाइट पर नहीं चलेंगे और एक सीएसपी उल्लंघन की सूचना दी जा रही है।

Firefox bug report में विशेष रूप से similar discussion on the W3C spec से लिंक करने में इस समस्या पर बहुत लंबी चर्चा है। तो अब तक, आप वास्तव में सीएसपी द्वारा अप्रभावित बुकमार्कमार्क्स पर भरोसा नहीं कर सकते हैं। आप हमेशा सीएसपी को पूरी तरह से अक्षम कर सकते हैं, लेकिन यह आपके लिए एक महत्वपूर्ण सुरक्षा परत कम है।

+0

इस परीक्षण के लिए धन्यवाद! लेकिन अगर आप चाहें तो बस सीएसपी स्विच कर सकते हैं। इसके बारे में खोलें: कॉन्फ़िगर करें और "false.csp.enable" को "false" पर सेट करें। तो आप वैसे भी अपनी खुद की पुस्तिकाएं चलाने में सक्षम होंगे। – PiTheNumber

+3

@PiTheNumber: मेरा जवाब पहले से ही कहता है कि आप सीएसपी को बंद कर सकते हैं - और ऐसा करने की सलाह नहीं देते हैं। –

+0

क्षमा करें, जब मैंने टिप्पणी लिख रही थी तो मैंने आपको संपादित नहीं किया था। – PiTheNumber

5

व्यवहार मोज़िलास विकी में निर्दिष्ट है।

सीएसपी उपयोगकर्ता द्वारा आपूर्ति की गई स्क्रिप्ट (जैसे ब्राउज़र ऐड-ऑन और बुकमार्कलेट) के संचालन में हस्तक्षेप नहीं करना चाहिए।

यहाँ एक नज़र: https://wiki.mozilla.org/Security/CSP/Specification#Non-Normative_Client-Side_Considerations

5

हाँ, मोज़िला फ़ायरफ़ॉक्स में सीएसपी ब्लॉक बुकमार्कलेट। bug about it है।

हालांकि, अगर आप एक बाहरी CSS स्टाइलशीट में जे एस कोड इंजेक्शन लगाने, मेरे Top News Feed bookmarklet तरह से इस प्रतिबंध के आसपास पहुंच सकते है:

बाहरी सीएसएस:

#topnewsfeed { font-family: '(function(){/*payload*/})()'; } 

बुकमार्कलेट जे एस:

(function() { 
    var a = document.createElement("link"); 
    a.rel = "stylesheet"; 
    a.href = "//niutech.github.io/topnewsfeed/topnewsfeed.css"; 
    a.onload = function() { 
     var a = b.currentStyle ? b.currentStyle.fontFamily : document.defaultView.getComputedStyle(b, null).fontFamily; 
     eval(a.replace(/^["']|\\|["']$/g, "")); 
    }; 
    document.body.appendChild(a); 
    var b = document.createElement("div"); 
    b.id = "topnewsfeed"; 
    document.body.appendChild(b); 
})() 

बुकमार्कलेट जेएस कोड युक्त एक सीएसएस फ़ाइल लोड करता है, इस सीएसएस द्वारा स्टाइल किए गए तत्व को जोड़ता है, तत्व शैली विशेषता औरपढ़ता हैकोड।

+5

'स्टाइलशीट लोड करने से इंकार कर दिया गया' https: // /bookmarklet.css 'क्योंकि यह निम्नलिखित सामग्री सुरक्षा नीति निर्देश का उल्लंघन करता है: "शैली-src' self '' unsafe-inline '' unsafe-eval 'assets-cdn.github .com "। – Michael

0

मैंने Greasemonkey उपयोगकर्ताक्रिप्ट (फ़ायरफ़ॉक्स में) का उपयोग करके इस समस्या के लिए एक कार्य-आसपास "ठीक" बनाया है। अब आपके पास सभी सीएसपी और https: // साइट्स पर बुकमार्कमार्लेट हो सकते हैं, साथ ही आपके बुकमार्लेट्स को एक बुकमार्क्स में अलग-अलग स्क्वाइड होने की बजाए एक अच्छी, आसानी से संपादन योग्य लाइब्रेरी फ़ाइल में रखा जा सकता है।

देखें: https://groups.google.com/d/msg/greasemonkey-users/mw61Ynw5ORc/Gl_BNUhtSq0J

+0

यह विधि काम नहीं करती है क्योंकि बुकमार्कलेट निष्पादित नहीं किया जा सकता है (बुकमार्कलेट = 'असुरक्षित-इनलाइन') – mems

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