इसका इस्तेमाल कैसे करें
- नीति में निर्देश हर लाइन में एक लिखें, उनके नाम वैसे ही जैसे लिखे जाते हैं, जैसे script-src।
- डिलीवरी चुनें: Content-Security-Policy नीति लागू करता है, और Content-Security-Policy-Report-Only वह हेडर है जिससे पहले जाँच होती है।
- संसाधन के हिसाब से लागू नियम पढ़ें, ताकि दिखे कि स्क्रिप्ट, स्टाइल, इमेज और फ्रेम किस निर्देश के अधीन हैं।
- हेडर की लाइन अपने सर्वर पर कॉपी करें, और परिणाम के नीचे दी गई हर चेतावनी ठीक करें।
संसाधन पर कौन सा नियम लागू होता है
ब्राउज़र हर तरह के संसाधन को एक निर्देश से जाँचता है। जब वह निर्देश नहीं होता, तो वह एक श्रृंखला में नीचे की ओर फॉलबैक करता है, और तालिका दिखाती है कि उसने कौन सी श्रृंखला पकड़ी। ये श्रृंखलाएँ CSP Level 3 के खंड 6.8.3 से हैं।
- स्क्रिप्ट: script-src-elem, फिर script-src, फिर default-src।
- इनलाइन इवेंट हैंडलर: script-src-attr, फिर script-src, फिर default-src।
- स्टाइलशीट: style-src-elem, फिर style-src, फिर default-src। इनलाइन style एट्रिब्यूट यही पैटर्न style-src-attr के साथ मानते हैं।
- फ्रेम: frame-src, फिर child-src, फिर default-src।
- वर्कर: worker-src, फिर child-src, फिर script-src, फिर default-src।
- इमेज, फॉन्ट, मीडिया, ऑब्जेक्ट, मैनिफ़ेस्ट और fetch अनुरोध: उनका अपना निर्देश, फिर default-src।
जाँचने वाला टूल क्या पढ़ता है
निर्देश सेमीकोलन से अलग होते हैं, और यह टूल लाइन ब्रेक भी लेता है। नाम पहले स्पेस तक पढ़ा जाता है, और उसमें बड़े-छोटे अक्षरों का फर्क नहीं होता। जब कोई निर्देश दो बार आए, तो पहला गिना जाता है और दोहराव छोड़ दिया जाता है (CSP Level 3, खंड 2.2.1)।
- 'self' और 'none' जैसे कीवर्ड सिंगल कोट में लिखे जाते हैं। 'none' अपनी सूची में अकेला होना चाहिए।
- nonce 'nonce-' के बाद base64 मान है। hash sha256, sha384 या sha512 है, फिर डैश और base64 मान (खंड 2.3.1)।
- निर्देश के मान में कॉमा की अनुमति नहीं है, क्योंकि वह हेडर में नीतियों को अलग करता है।
टूल क्या नहीं करता
- यह पेज लोड नहीं करता और नीति को ब्राउज़र में नहीं परखता। तालिका वह नियम दिखाती है जो ब्राउज़र इस्तेमाल करेगा, यह नहीं कि आपका पेज अब भी चलता है या नहीं।
- यह कीवर्ड, nonce और hash की स्पेलिंग जाँचता है, पर होस्ट और स्कीम स्रोतों को विस्तार से नहीं जाँचता।
- यह उन निर्देशों पर फैसला नहीं देता जिन्हें यह सूची में नहीं रखता, जैसे sandbox। वे हेडर की लाइन में बिना बदले रहते हैं।
हल किया हुआ उदाहरण: नमूना नीति
नमूना नीति में स्क्रिप्ट script-src इस्तेमाल करती हैं, क्योंकि script-src-elem नहीं है। फ्रेम के पास न frame-src है न child-src, इसलिए वे default-src पर जाते हैं। वर्कर के पास न worker-src है न child-src, इसलिए वे script-src इस्तेमाल करते हैं। style-src निर्देश में 'unsafe-inline' है, और टूल उसे एक चेतावनी के रूप में दिखाता है।
| संसाधन | क्रम से जाँचे गए | इस्तेमाल होने वाला नियम |
|---|---|---|
| स्क्रिप्ट (script एलिमेंट) | script-src-elem, script-src, default-src | script-src |
| फ्रेम (iframe) | frame-src, child-src, default-src | default-src |
| वर्कर | worker-src, child-src, script-src, default-src | script-src |
अक्सर पूछे जाने वाले सवाल
तालिका स्क्रिप्ट के लिए ऐसा नियम क्यों दिखाती है जो मैंने नहीं लिखा?
जिस संसाधन का अपना निर्देश नहीं होता, वह उस निर्देश को इस्तेमाल करता है जिस पर वह फॉलबैक करता है। स्क्रिप्ट के लिए यह script-src-elem, फिर script-src, फिर default-src है। तालिका वही नियम दिखाती है जो ब्राउज़र इस्तेमाल करेगा, इसलिए गायब script-src भी एक नियम दे सकता है।
'unsafe-inline' किसकी अनुमति देता है?
वह उन्हीं जगहों पर इनलाइन स्क्रिप्ट या इनलाइन स्टाइल की अनुमति देता है जिन्हें निर्देश ढकता है। उसी स्रोत सूची में nonce या hash हो, तो ब्राउज़र 'unsafe-inline' को अनदेखा कर देते हैं (CSP Level 3, खंड 6.7.3.2), इसलिए जरूरी इनलाइन कोड के लिए इनमें से कोई एक इस्तेमाल करें।
क्या report-uri लिखें या report-to?
report-to लिखें। MDN इसे report-uri की जगह लेने वाला निर्देश बताता है। जब तक report-to व्यापक रूप से समर्थित नहीं है, MDN सलाह देता है कि दोनों भेजें, और टूल report-uri होने पर चेतावनी देता है।
मेरे एक निर्देश का नाम अज्ञात क्यों दिखता है?
टूल केवल वही निर्देश जाँचता है जो ब्राउज़र में आते हैं और MDN में दर्ज हैं। जो नाम वह नहीं जानता, वह हेडर की लाइन में बिना बदले रहता है, पर तालिका में नहीं आता और उस पर फैसला नहीं होता।
क्या यह टूल मेरी नीति कहीं भेजता है?
नहीं। हेडर आपके ब्राउज़र में बनता है। आप जो लिखते हैं वह न हम तक भेजा जाता है, न सहेजा जाता है, और नीति किसी साइट पर परखी नहीं जाती।
क्या CSP Level 3 अंतिम मानक है?
अभी नहीं। जिस दस्तावेज का यह टूल पालन करता है, वह W3C का 27 अक्टूबर 2026 का वर्किंग ड्राफ्ट है, यानी Recommendation की राह पर एक ड्राफ्ट। प्रोडक्शन की नीति में किसी नियम पर भरोसा करने से पहले नवीनतम संस्करण पढ़ें।
स्रोत
- CSP Level 3 (अंग्रेजी में), W3C वर्किंग ड्राफ्ट 27 अक्टूबर 2026 (खंड 2.2, 2.3.1, 4.4.1, 6.7.3.2 और 6.8.3)
- MDN (अंग्रेजी में): Content-Security-Policy हेडर, उसके निर्देश और उनका फॉलबैक
आँकड़े और टेक्स्ट आखिरी बार मंगलवार, 10 नवंबर 2026 को जाँचे गए।