सिर्फ बुकमार्कलेट के लिए फ़ायरफ़ॉक्स में CSP को अक्षम कैसे करें?


26

आज मैंने देखा है कि मैं सामग्री सुरक्षा नीति (CSP) प्रतिबंधों के कारण https://github.com/ पर बुकमार्क चलाने में असमर्थ हूं । क्या फ़ायरफ़ॉक्स में CSP को सिर्फ बुकमार्कलेट के लिए अक्षम करने का एक तरीका है, और सब कुछ नहीं?

मैंने security.csp.enableविकल्प पर ध्यान दिया about:config, लेकिन यह CSP को पूरी तरह से अक्षम कर देगा। बुकमार्कलेट को सक्रिय करते समय निम्नलिखित संदेश कंसोल में लॉग किया जाता है:

Timestamp: 04/22/2013 02:39:05 PM
Warning: CSP WARN:  Directive inline script base restriction violated

Source File: https://github.com/
Line: 0
Source Code:
javascript:...

जवाबों:


8

आप अपने बुकमार्क को GreaseMonkey उपयोगकर्ताओं के लिए कनवर्ट करने का प्रयास कर सकते हैं । वे एक विशेषाधिकार प्राप्त वातावरण में चलते हैं और सीएसपी के अधीन नहीं हैं।

हालाँकि, निश्चित रूप से उपयोगकर्ता स्क्रिप्ट और बुकमार्क के अंतर अलग-अलग होते हैं - उपयोगकर्ता बुकमार्क ऑन-डिमांड होते हुए अपने आप चलते हैं। आप <button>इसे उपयोगकर्ता पृष्ठ में जोड़कर, पृष्ठ पर जोड़कर, और onclickउस बटन पर एक ईवेंट श्रोता सेट करके बुकमार्क के कोड को आग लगाने के लिए इसे रोक सकते हैं।

कोड इस तरह जाना चाहिए:

// ==UserScript==
// @name            Name
// @description     Description
// @version         0.1
// @namespace       example.Lekensteyn
// @grant           none
// @include         http*://github.com/*/*/commit/*
// ==/UserScript==

var myBookmarklet = function () {
    // here goes the code of the bookmarklet
};

var newButton = document.createElement('button');
newButton.innerHTML = 'Execute my bookmarklet';

newButton.addEventListener('click', function(evt) {
    myBookmarklet();
});

document.getElementById('someElement').appendChild(newButton);

मेरे उपयोगकर्ता नाम से लगभग शाब्दिक रूप से लिया गया जो कि GitHub को भी लक्षित कर रहा है। आप debugger;स्क्रिप्ट में कीवर्ड का उपयोग करके फायरबग में उपयोगकर्ताओं के डिबग कर सकते हैं ।

हालाँकि नोट करें कि फायरबग खुद अभी CSP के अधीन है, इसलिए आप कंसोल में कोड निष्पादित नहीं कर सकते हैं (लेकिन आप "रीड-ओनली" मोड में अपने उपयोगकर्ताओं का निरीक्षण कर सकते हैं)। इस बग में इस बात का ध्यान रखा जा रहा है ।


1
ऑन-डिमांड सुविधा बहुत महत्वपूर्ण है। मेरे पास बुकमार्कलेट हैं जो कुछ सुविधाओं के साथ एक त्वरित eval-textarea सम्मिलित करते हैं जो पृष्ठ के एक बड़े हिस्से को नहीं भरते हैं, एक वर्तमान पृष्ठ के लिए क्यूआर कोड बनाने के लिए और कुछ अन्य छोटे भागों में। वे जीएच-विशिष्ट नहीं हैं। बुकमार्कलेट की शक्ति यह है कि उन्हें बहुत आसानी से बनाया और हटाया जा सकता है। GreaseMonkey पहले से ही स्थापित था, लेकिन वह CSP समस्या को हल करने वाला नहीं है। सुझावों के लिए धन्यवाद, शायद Firebug के लिए एक समाधान भी बुकमार्क के लिए लाभ का होगा।
लेकेनस्टाइन

4
दुर्भाग्य से फायरबग फिक्स केवल फायरबग को ही ठीक करेगा। से Github सीएसपी पर प्रविष्टि ब्लॉग : के रूप में सीएसपी कल्पना द्वारा स्पष्ट कर दिया, ब्राउज़र बुकमार्कलेट सीएसपी से प्रभावित नहीं किया जाना चाहिए। (..) लेकिन, किसी भी ब्राउज़र को यह सही नहीं लगता। सभी CSP उल्लंघन का कारण बनते हैं और बुकमार्क को कार्य करने से रोकते हैं। शायद आपको मामले की अधिक अच्छी तरह से जांच करनी चाहिए और बुग्जिला पर एक मुद्दे की रिपोर्ट करनी चाहिए।
jakub.g

2
BTW आप GM_registerMenuCommand का उपयोग ऑन-डिमांड पर एक फ़ंक्शन मंगलाचरण करने के लिए कर सकते हैं । मत भूलना @grant GM_registerMenuCommand। यह Greasemonkey मेनू में प्रवेश करता है, इसके अंतर्गत आता है (GM logo) > User Script Command...। इस तरह से आप आसानी से अपने बुकमार्क को उपयोगकर्ताओं में बदल सकते हैं।
jakub.g

मुझे समझ नहीं आ रहा है ... कोड पर क्लिक करने के लिए पेज पर एक बटन बनाने पर काम नहीं होता है, यह अभी भी एक CSP अपवाद फेंकता है
माइकल

7

गितुब का कहना है कि इसे कल्पना के अनुसार काम करना चाहिए, लेकिन कोई भी ब्राउज़र इसे सही नहीं करता है:

https://github.com/blog/1477-content-security-policy#bookmarklets

आपको इस मुद्दे के लिए अपने पसंदीदा ब्राउज़र के लिए एक बग खोलना चाहिए, या इसके लिए वोट देना चाहिए:


2
रिकॉर्ड के लिए, विशेष रूप से बुनियादी बुकमार्कलेट कार्यक्षमता के लिए एक और फ़ायरफ़ॉक्स बग है (चर्चा में कम होने की संभावना है): Bugzilla.mozilla.org/show_bug.cgi?id=1478037
djpoho

दूसरों को क्लिक बचाने के लिए, ऊपर टिप्पणी में @djpohly द्वारा उल्लिखित 1478037, बुकमार्कलेटलेट को बाहरी संसाधनों को लोड न करने के लिए अनुमति देने के बारे में है।
वॉल्ड्रिअस

1

कई उत्तर उपयोगकर्ता स्क्रिप्ट्स (जैसे टैम्परमॉन्की या ग्रीज़मोंकी) की सलाह देते हैं, लेकिन मैं यह याद रखना चाहता हूं कि इन एक्सटेंशनों के कारण कुछ पेजों को ब्लैकलिस्ट किया जाता है। (निश्चित रूप से, आप ब्लैकलिस्टिंग को ओवरराइड कर सकते हैं, लेकिन देवताओं की सुरक्षा को ध्यान में रखते हुए और इन पेजों को बंद कर दिया गया था)।

उदाहरण के लिए, मैं जल्दी से किसी भी अमेज़न लिस्टिंग से ReviewMeta पर जाने के लिए एक बुकमार्कलेट का उपयोग करना चाहता था, लेकिन अमेज़ॅन ने असुरक्षित स्क्रिप्ट स्रोतों को अवरुद्ध कर दिया (अपडेट: यह अवरुद्ध नहीं था, लेकिन मेरे पास कोई स्क्रिप्ट नहीं थी, यह शर्म की बात है)। दुर्भावनापूर्ण उपयोगकर्ता स्क्रिप्ट को स्थापित / उपयोग करने से रोकने के लिए उपयोगकर्ता स्क्रिप्ट एक्सटेंशन को डिफ़ॉल्ट रूप से बैंकिंग और खरीदारी साइटों पर ब्लैकलिस्ट किया जाता है।

(PS यह प्रति उत्तर नहीं है, लेकिन मुझे लगा कि उपयोगकर्ता को केवल पृष्ठ को ब्लैक लिस्टेड करने और उसे अन-ब्लैकलिस्ट करने से झिझकने के लिए उपयोगकर्ता पर हाथ रखने से पहले इसे ध्यान में रखना उपयोगी होगा।)


0

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

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


-1

यदि आप फ़ायरफ़ॉक्स में CSP- सक्षम वेबसाइटों पर अपने बुकमार्क चलाना चाहते हैं, तो आप CSS स्टाइलशीट का उपयोग कर सकते हैं, StackOverflow पर मेरा उत्तर देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.