सामग्री सुरक्षा नीति "डेटा" Chrome 28 में आधार 64 छवियों के लिए काम नहीं कर रहा है


247

इस सरल उदाहरण में, मैं मेटा http-equiv हेडर के साथ एक CSP हेडर सेट करने का प्रयास कर रहा हूं। मैंने एक बेस 64 इमेज शामिल की और मैं क्रोम लोड इमेज बनाने की कोशिश कर रहा हूं।

मुझे लगा कि dataकीवर्ड को ऐसा करना चाहिए, लेकिन किसी तरह यह काम नहीं कर रहा है।

मुझे डेवलपर टूल में केवल निम्न त्रुटि मिलती है:

"Img src-'स्वयं' डेटा": क्योंकि इसमें यह सामग्री सुरक्षा नीति निर्देश उल्लंघन करता है;: छवि 'बेस 64, R0lGODlhDwAPAOZEAMkJCfAwMMYGBtZMTP75 + euIiPFBP + hVVf3v7 ... nw7yk4Mjr6GLUY + joiBI2QAACABwJDCHgoKOHEoAYVBAgY8GGAxAoNGAmiwMHBCgccKDAKBAA7 छवि / png डेटा' लोड करने के लिए मना कर दिया।

उदाहरण कोड (JSFiddle इस उदाहरण के लिए काम नहीं कर रहा है क्योंकि मैं मेटा हेडर वहाँ सेट नहीं कर सकता):

<html>
<head>
<meta http-equiv="Content-Security-Policy" content="
        default-src 'none';
        style-src 'self' 'unsafe-inline';
        img-src 'self' data;
        " />
    <style>
        #helloCSP {
            width: 50px;
            height: 50px;
            background: url(data:image/png;base64,R0lGODlhDwAPAOZEAMkJCfAwMMYGBtZMTP75+euIiPFBP+hVVf3v7+iHh/JNTfh9dNUYGPjTvskXFfOLi/daVe96es4eHPWIiOqbi9dNRvzWwexdV9U1NeFSS94iIvuxodVGP/ZsZM8jI+ibm/alluQzMdxSSvbGstwsKu2Yid4iIfjQu/JnYO6djvajlMQEBPvLuOJdXeMxL/3jzPBSTdwqKNY2Mf3i4vU5OfbPz/3f3/zUv/zizO0tLc0NDfMzM+UlJekpKeEhId0dHdUVFdkZGdEREf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEQALAAAAAAPAA8AAAepgESCRBsLEDQQCxuDgxYdO5CROx0WgywGAQEKM0M2CpkGN0QvMDmmE0OpE6Y5KEQqPbE9D6lDD7I9IBc8vDwRtRG9PBcuPsY+B7UHxz4hP8/PGghDCBrQPyYxQdvbBUMF3NskGUDl5QwtDOblGSVC7+8JNQnw7yk4Mjr6GLUY+joiBI2QAACABwJDCHgoKOHEoAYVBAgY8GGAxAoNGAmiwMHBCgccKDAKBAA7) no-repeat;
            border: 1px solid red;
        }
    </style>
</head>
<body>
<h1>CSP</h1>
    <div id="helloCSP"></div>
</body>
</html>

आप इस उदाहरण को यहाँ भी खोल सकते हैं:
https://dl.dropboxusercontent.com/u/638360/ps/csp.html

जवाबों:


468

सीएसपी कल्पना में व्याकरण के अनुसार , आपको योजनाओं को निर्दिष्ट करने की आवश्यकता है scheme:, न कि केवल scheme। इसलिए, आपको छवि स्रोत निर्देश को इसमें बदलना होगा:

img-src 'self' data:;

41
इस अजीबता का कारण यह है कि 'डेटा' योजना, और 'डेटा' नामक होस्ट के बीच अंतर करना मुश्किल है।
माइक वेस्ट

1
मुझे लगता है कि URL सामान्य रूप से पार्स करने के लिए थोड़े अजीब हैं।

5
मेरे पास मेरा डेटा था: उद्धरणों में - 'डेटा:' - वह भी काम करने में विफल रहता है - और आपके जवाब ने मुझे एक समस्या के रूप में भी सचेत किया है
kris

18
यह ध्यान रखना उपयोगी है कि सुरक्षा निहितार्थों पर विचार किए बिना आपको इसे नहीं जोड़ना चाहिए। इस सिक्योरिटी स्टैक एक्सचेंज प्रश्न को
Matthijs Wessels

1
सुरक्षा स्कैनर डेटा पाते हैं: असुरक्षित तत्व के रूप में
सजीथ

0

इसे इस्तेमाल करे

लोड करने के लिए डेटा:

<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'><path fill='#343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/></svg>

base64 कनवर्टर के लिए एक utf8 प्राप्त करें और "svg" स्ट्रिंग को इसमें परिवर्तित करें:

PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUn
PjxwYXRoIGZpbGw9JyMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLz48L3N2Zz4=

और CSP है

img-src data: image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUn
PjxwYXRoIGZpbGw9JyMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLz48L3N2Zz4=

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