स्क्रिप्ट को लोड करने से इनकार कर दिया क्योंकि यह निम्नलिखित सामग्री सुरक्षा नीति के निर्देशों का उल्लंघन करता है


103

जब मैंने 5.0.0 ( लॉलीपॉप ) से ऊपर के एंड्रॉइड सिस्टम वाले उपकरणों पर अपने ऐप को तैनात करने की कोशिश की , तो मुझे इस तरह के त्रुटि संदेश मिलते रहे:

07-03 18: 39: 21.621: D / SystemWebChromeClient (9132): फ़ाइल: ///android_asset/www/index.html: पंक्ति 0: स्क्रिप्ट को लोड करने से इनकार किया 'http: // xxxxx क्योंकि यह निम्नलिखित सामग्री का उल्लंघन करता है सुरक्षा नीति निर्देश: "स्क्रिप्ट-एसकेसी 'स्वयं' 'असुरक्षित-eval' 'असुरक्षित-इनलाइन"। 07-03 18: 39: 21.621: I / क्रोमियम (9132): [INFO: CONSOLE (0)] "स्क्रिप्ट 'http: // xxx' को लोड करने से इनकार कर दिया क्योंकि यह निम्नलिखित सामग्री सुरक्षा नीति निर्देश का उल्लंघन करता है: स्क्रिप्ट- src 'self' 'असुरक्षित-eval' 'असुरक्षित-इनलाइन' ''।

हालाँकि, अगर मैंने इसे 4.4.x ( किटकैट ) के एंड्रॉइड सिस्टम के साथ मोबाइल डिवाइस पर तैनात किया है , तो सुरक्षा नीति डिफ़ॉल्ट रूप से काम करती है:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

फिर मैंने सोचा, शायद, मुझे इस तरह से कुछ बदलना चाहिए:

<meta http-equiv="Content-Security-Policy" content="script-src 'self' 'unsafe-eval' 'unsafe-inline'; object-src 'self'; style-src 'self' 'unsafe-inline'; media-src *">

असल में, दोनों विकल्प मेरे लिए काम नहीं करते हैं। कैसे मैं इस मुद्दे को हल कर सकता हूँ?


मेरे मुद्दे के समान। मैं JSON फ़ाइल प्राप्त करने में असमर्थ हूं, "क्योंकि यह निम्नलिखित सामग्री सुरक्षा नीति के निर्देशों का उल्लंघन करता है:" कनेक्ट-src 'स्वयं' ""
माइकल आर

1
@MichaelR यदि आप जेपी के माध्यम से JSON की कुछ जानकारी को छेड़छाड़ करना चाहते हैं जैसे कि टैम्परमॉन्की एडऑन या अन्य सब कुछ आप इस प्लगइन का उपयोग कर सकते हैं chrome.google.com/webstore/detail/disable-content-security/ ... और CSP चेक को अक्षम करें जबकि आप प्राप्त करना चाहते हैं कुछ कुछ। यह पूरी तरह से सुरक्षित नहीं है, लेकिन कुछ मामलों में यह काम कर सकता है। मैं इस उत्तर को यहां पोस्ट कर रहा हूं क्योंकि मैं अपनी त्रुटि की तलाश कर रहा था और यह विषय Google में पहली बार दिखा।
Eryk Wróbel

जवाबों:


68

नीचे इसके साथ अपना मेटा टैग बदलने का प्रयास करें:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' http://* 'unsafe-inline'; script-src 'self' http://* 'unsafe-inline' 'unsafe-eval'" />

या आपके पास क्या है, इसके अलावा, आपको http://*दोनों को जोड़ना चाहिए style-srcऔर script-srcजैसा कि 'स्व' के बाद जोड़ा गया है।

यदि आपका सर्वर Content-Security-Policyहेडर सहित है , तो हेडर मेटा को ओवरराइड करेगा।


6
जैसा कि मैं समझता हूँ कि CSP आप यहाँ परिभाषित करते हैं कि हमलों से बचने के लिए सभी प्रकार की सुरक्षा को निष्क्रिय कर देता है , स्क्रिप्ट टैग की अनुमति देता है और किसी भी डोमेन से स्क्रिप्ट लोड करने और असुरक्षित कनेक्शन पर भी। डेवलपर्स देखें। Googleweb/fundamentals/security/csp या क्या मुझे s.th मिलता है गलत? मुझे लगता है कि ज्यादातर मामलों में (विकासशील और डिबगिंग को छोड़कर) यह वही नहीं है जो आप चाहते हैं ... ठीक है?
पीटर टी।


9
मैं इस उत्तर को अस्वीकार कर दूंगा, क्योंकि आप '' असुरक्षित-इनलाइन '' असुरक्षित-eval '' का उपयोग करने का सुझाव देते हैं, जिसे आपको CSP का उपयोग करते समय नहीं करना चाहिए!
हर्तेस्ला

39

स्वयं जवाब MagngooSasa द्वारा दिए गए चाल किया था, लेकिन किसी और को इस सवाल का जवाब समझने की कोशिश कर के लिए, यहाँ कुछ थोड़ा और अधिक विवरण हैं:

कॉर्डोवा विकसित करते समयविजुअल स्टूडियो के साथ ऐप करते समय, मैंने एक दूरस्थ जावास्क्रिप्ट फ़ाइल [यहां स्थित http://Guess.What.com/MyScript.js] को आयात करने की कोशिश की, लेकिन मुझे शीर्षक में उल्लिखित त्रुटि है।

यहाँ परियोजना के index.html फ़ाइल में पहले मेटा टैग है :

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

दूरस्थ स्क्रिप्ट आयात करने की अनुमति देने के लिए यहां मेटा टैग को सही किया गया है :

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

और कोई त्रुटि नहीं!


15

इसके साथ हल किया गया था:

script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval';

46
क्या आप कृपया इसे थोड़ा और समझा सकते हैं? क्या आप पूर्ण मेटा पेस्ट कर सकते हैं?
टोनी

4
@dyoser यहाँ संदर्भ है developer.chrome.com/extensions/contentSecurityPolicy#relaxing
igaurav

2
यह किसी भी दुर्भावनापूर्ण प्लगइन्स / xss को इनलाइन और eval स्क्रिप्ट को इंजेक्ट करने की अनुमति देकर CSP को प्रभावी ढंग से निष्क्रिय कर देता है, जो CSP को सक्षम करने के पूरे उद्देश्य को पराजित करता है।
अतुल्य

7

हमने इसका उपयोग किया:

<meta http-equiv="Content-Security-Policy" content="default-src gap://ready file://* *; style-src 'self' http://* https://* 'unsafe-inline'; script-src 'self' http://* https://* 'unsafe-inline' 'unsafe-eval'">

7

पूर्ण विवरण की तलाश में किसी के लिए, मैं आपको सामग्री सुरक्षा नीति: https://www.html5rocks.com/en/tutorials/security/content-security-policy/ पर एक नज़र डालने की सलाह देता हूं ।

" Https://mybank.com के कोड में केवल https://mybank.com के डेटा तक पहुंच होनी चाहिए , और https://evil.example.com को निश्चित रूप से एक्सेस की अनुमति नहीं दी जानी चाहिए। प्रत्येक मूल को अलग-थलग रखा जाता है। बाकी वेब "

XSS हमले ब्राउज़र की अक्षमता पर आधारित होते हैं जो आपके ऐप के कोड को किसी अन्य वेबसाइट से डाउनलोड किए गए कोड से अलग कर सकते हैं। इसलिए आपको Content-Security-PolicyHTTP हेडर का उपयोग करके सामग्री को डाउनलोड करने के लिए सुरक्षित सामग्री पर विचार करना चाहिए, जिसे आप सुरक्षित हैं ।

इस नीति को नीति निर्देशों की एक श्रृंखला का उपयोग करके वर्णित किया गया है, जिनमें से प्रत्येक एक निश्चित संसाधन प्रकार या नीति क्षेत्र के लिए नीति का वर्णन करता है। आपकी नीति में एक डिफ़ॉल्ट-src नीति निर्देश शामिल होना चाहिए, जो अन्य संसाधन प्रकारों के लिए एक कमबैक है जब उनके पास अपनी स्वयं की नीतियां नहीं होती हैं।

इसलिए, यदि आप अपना टैग संशोधित करते हैं:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *;**script-src 'self' http://onlineerp.solution.quebec 'unsafe-inline' 'unsafe-eval';** ">

आप कह रहे हैं कि आप Javacsript कोड (के निष्पादन के लिए अधिकृत कर रहे script-srcमूल से) 'self', http://onlineerp.solution.quebec, 'unsafe-inline', 'unsafe-eval'

मुझे लगता है कि पहले दो आपके उपयोग के मामले में स्पष्ट रूप से मान्य हैं, मैं अन्य लोगों के बारे में थोड़ा अनिश्चित हूं। 'unsafe-line'और 'unsafe-eval'एक सुरक्षा समस्या उत्पन्न करते हैं, इसलिए आपको उनका उपयोग तब तक नहीं करना चाहिए जब तक कि आपको उनके लिए बहुत विशिष्ट आवश्यकता न हो:

"यदि आपके एप्लिकेशन के लिए eval और इसके टेक्स्ट-टू-जावास्क्रिप्ट ब्रेथ्रेन पूरी तरह से आवश्यक हैं, तो आप स्क्रिप्ट-src निर्देश में अनुमति स्रोत के रूप में 'असुरक्षित-eval' जोड़कर उन्हें सक्षम कर सकते हैं। लेकिन, फिर, कृपया नहीं। प्रतिबंध न करें। स्ट्रिंग्स को निष्पादित करने की क्षमता एक हमलावर के लिए आपकी साइट पर अनधिकृत कोड को निष्पादित करना अधिक कठिन बना देती है। " (माइक वेस्ट, Google)


मेरे लोकलहोस्ट पेज में मैं दूसरे होस्ट स्क्रिप्ट को क्यों जोड़ सकता हूं?
mqliutie

यह 3 पार्टी स्क्रिप्ट का पुन: उपयोग करने के लिए असामान्य नहीं है जो आपके सर्वर में होस्ट नहीं किए गए हैं लेकिन जिसमें आप "विश्वास" करते हैं
Rocío García Luque

7

पूर्ण अनुमति स्ट्रिंग

पिछले उत्तरों ने मेरे मुद्दे को ठीक नहीं किया, क्योंकि वे blob: data: gap:एक ही समय में कीवर्ड शामिल नहीं करते हैं ; तो यहाँ एक स्ट्रिंग है जो करता है:

<meta http-equiv="Content-Security-Policy" content="default-src * self blob: data: gap:; style-src * self 'unsafe-inline' blob: data: gap:; script-src * 'self' 'unsafe-eval' 'unsafe-inline' blob: data: gap:; object-src * 'self' blob: data: gap:; img-src * self 'unsafe-inline' blob: data: gap:; connect-src self * 'unsafe-inline' blob: data: gap:; frame-src * self blob: data: gap:;">

चेतावनी: यह दस्तावेज़ को कई कारनामों को उजागर करता है। उपयोगकर्ताओं को कंसोल में कोड को निष्पादित करने से रोकना या कॉर्डोवा एप्लिकेशन जैसे बंद वातावरण में होना सुनिश्चित करें ।


1
यदि आप कंसोल में JQuery को इस तरह से लोड करने का प्रयास कर रहे हैं तो यह सही उत्तर है: stackoverflow.com/a/31912495/137948
विल शेपर्ड

4

इस पर कुछ और विस्तार करने के लिए

script-src 'self' http://somedomain 'unsafe-inline' 'unsafe-eval';

मेटा टैग की तरह,

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; script-src 'self' https://somedomain.com/ 'unsafe-inline' 'unsafe-eval';  media-src *">

त्रुटि को ठीक करता है।


2

इस नीति को अनदेखा करने के लिए मेटा टैग जोड़ना हमारी मदद नहीं कर रहा था, क्योंकि हमारी वेबसर्वर Content-Security-Policyप्रतिक्रिया में हेडर को इंजेक्ट कर रही थी ।

हमारे मामले में हम एक के लिए वेब सर्वर के रूप में उपयोग कर रहे हैं Ngnix बिलाव 9 जावा आधारित अनुप्रयोग। वेब सर्वर से, यह ब्राउज़र को निर्देश दे रहा है कि अनुमति न दें inline scripts, इसलिए एक अस्थायी परीक्षण के लिए हमने Content-Security-Policyटिप्पणी करके बंद कर दिया है।

इसे कैसे ngnix में बंद करें

  • डिफ़ॉल्ट रूप से, ngnix ssl.conf फ़ाइल में प्रतिक्रिया के लिए एक हेडर जोड़ना होगा:

    #> grep 'Content-Security' -ir /etc/nginx/global/ssl.conf add_header Content-Security-Policy "default-src 'none'; frame-ancestors 'none'; script-src 'self'; img-src 'self'; style-src 'self'; base-uri 'self'; form-action 'self';";

  • यदि आप बस इस लाइन पर टिप्पणी करते हैं और ngnix को पुनरारंभ करते हैं, तो यह शीर्ष लेख को प्रतिक्रिया में नहीं जोड़ना चाहिए।

यदि आप सुरक्षा या उत्पादन के बारे में चिंतित हैं, तो कृपया इसका पालन न करें, केवल परीक्षण उद्देश्य और आगे बढ़ने के लिए इन चरणों का उपयोग करें।


-1

आपके द्वारा यह त्रुटि प्राप्त करने का संभावित कारण है क्योंकि आपने अपनी / .ignignore फ़ाइल में / बिल्ड फ़ोल्डर जोड़ा है या आमतौर पर इसे Git में चेक नहीं किया है।

इसलिए जब आप हेरोकू मास्टर को धक्का देते हैं , तो जिस फ़ोल्डर का आप संदर्भ दे रहे हैं, वह हेरोकू को धक्का नहीं देता है। और इसलिए यह इस त्रुटि को दर्शाता है।

यही कारण है कि यह स्थानीय रूप से ठीक से काम करता है, लेकिन तब नहीं जब आप हरोकू में तैनात हों।


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