সামগ্রী সুরক্ষা নীতি “ডেটা” ক্রোম 28-এ বেস 64 চিত্রের জন্য কাজ করছে না


247

এই সাধারণ উদাহরণে, আমি মেটা এইচটিপি-সমমান শিরোনামের সাথে একটি সিএসপি শিরোনাম সেট করার চেষ্টা করছি। আমি একটি বেস 64 চিত্র অন্তর্ভুক্ত করেছি এবং আমি ক্রোমটি চিত্রটি লোড করার চেষ্টা করছি।

আমি ভেবেছিলাম dataকীওয়ার্ডটি করা উচিত, তবে কোনওভাবে এটি কাজ করছে না।

আমি কেবল বিকাশকারী সরঞ্জামগুলিতে নিম্নলিখিত ত্রুটিটি পেয়েছি:

চিত্র 'ডেটা: চিত্র / পিএনজি; বেস 64, লোড করতে অস্বীকার

উদাহরণ কোড (জেএসফিডাল এই উদাহরণটির জন্য কাজ করছে না কারণ আমি সেখানে মেটা শিরোনাম সেট করতে পারি না):

<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.DPboxusercontent.com/u/638360/ps/csp.html

উত্তর:


468

সিএসপি অনুচ্ছেদে ব্যাকরণ অনুসারে , আপনার স্কিমগুলি কেবল হিসাবে scheme:নয়, নির্দিষ্ট করা দরকার scheme। সুতরাং, আপনাকে চিত্র উত্সের নির্দেশিকা এতে পরিবর্তন করতে হবে:

img-src 'self' data:;

41
এই বিশ্রীতার কারণ হ'ল 'ডেটা' স্কিম এবং 'ডেটা' নামের হোস্টের মধ্যে পার্থক্য করা অন্যথায় কঠিন।
মাইক ওয়েস্ট

1
আমি মনে করি ইউআরএলগুলি সাধারণভাবে পার্স করার জন্য কিছুটা বিশ্রী।

5
আমার কাছে আমার ডেটা ছিল: উদ্ধৃতিগুলিতে - 'ডেটা:' - এটিও কাজ করতে ব্যর্থ হয় - এবং আপনার উত্তর আমাকে সমস্যা হিসাবেও সতর্ক করেছিল
ক্রিস

18
এটি সুরক্ষিতকরণের প্রভাবগুলি বিবেচনা না করে আপনার এটিকে যুক্ত করা উচিত নয় তা লক্ষ করা দরকারী। দেখুন এই নিরাপত্তা স্ট্যাক বিনিময় প্রশ্ন
Matthijs ওয়েসেলস

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>

বেস 64 কে রূপান্তরকারীটিতে একটি utf8 পান এবং "এসভিজি" স্ট্রিংটিতে রূপান্তর করুন:

PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0IDUn
PjxwYXRoIGZpbGw9JyMzNDNhNDAnIGQ9J00yIDBMMCAyaDR6bTAgNUwwIDNoNHonLz48L3N2Zz4=

এবং সিএসপি হয়

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

প্রোটোকলের পরে কোনও প্রকার অন্তর্ভুক্ত করা সম্ভব বলে আমি মনে করি না। কেবলমাত্র "ডেটা:" বৈধ।
রমিজক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.