Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Content Security Policy: "img-src 'self' data:"

I have an app, in which the user would be able to copy an image URL, paste it unto an input and the image will be loaded on a box.

But my app, keeps triggering this message:

Refused to load the image 'LOREM_IPSUM_URL' because it violates the following Content Security Policy directive: "img-src 'self' data:".

That's my meta tag:

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

I'm using html2Canvas within the app, and when I remove this: "img-src 'self' data:"

It fires this error:

html2canvas.js:3025 Refused to load the image 'data:image/svg+xml, <svg xmlns='http://www.w3.org/2000/svg'></svg>' because it violates the following Content Security Policy directive: "default-src *".  Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback. 

Along with a bunch of other errors.

like image 218
Rafael de Castro Avatar asked Nov 01 '16 12:11

Rafael de Castro


People also ask

What is default-SRC in content security policy?

The default-src Directive. The default-src Content Security Policy (CSP) directive allows you to specify the default or fallback resources that can be loaded (or fetched) on the page (such as script-src , or style-src , etc.)

What is script-src in content security policy?

The HTTP Content-Security-Policy (CSP) script-src directive specifies valid sources for JavaScript. This includes not only URLs loaded directly into <script> elements, but also things like inline script event handlers ( onclick ) and XSLT stylesheets which can trigger script execution.

Where do I put Content Security Policy in HTML?

To add this custom meta tag, you can go to www.yourStore.com/Admin/Setting/GeneralCommon and find Custom <head> tag and add this as shown in the image below. Content Security Policy protects against Cross Site Scripting (XSS) and other forms of attacks such as ClickJacking.


2 Answers

Try replacing this part:

img-src * 'self' data: https:; 

So the complete tag:

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

Content Security Policy Reference

like image 157
manzapanza Avatar answered Oct 05 '22 07:10

manzapanza


img-src * 'self' data: https:; is not a good solution as it can make your app vulnerable against XSS attacks. The best solution here should be: img-src 'self' data:image/svg+xml. If it doesn't work try: img-src 'self' data:Consider changing it if you still have your directive as img-src * 'self' data: https:;

like image 35
Donald Shahini Avatar answered Oct 05 '22 09:10

Donald Shahini