web-dev-qa-db-fra.com

Refus de charger l'image car elle viole la politique de sécurité du contenu - Cordova

J'essaie de déployer mon application en suivant le document Code-Push. J'ai ensuite ajouté la sécurité de contenu suivante à mon application index.html

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

Immédiatement, j'ai ajouté, mon application ne fonctionne plus. Lorsque j'exécute mon navigateur cordova. J'ai vu beaucoup d'erreurs dans la console. Il s'avère que mes fichiers de styles référencés depuis github, mes images référencées depuis mysite.com/... et mes autres scripts externes, goopleapis sont ma politique de sécurité ci-dessous

<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 *">

Cela fonctionne maintenant très bien. Ma question est: quelle est la ramification de la sécurité? Dois-je le laisser comme ça? Comment faire mieux? Toute aide ou opinion serait appréciée. Je crains que le départ * ne permette que les attaques destinées à s'arrêter.

11
Nuru Salihu

Vous avez raison, en laissant votre CSP comme cela pourrait rendre les choses plus facile pour un attaquant. L'idée principale derrière l'utilisation d'un CSP est URL comme décrit whitelisting ici .

En mettant tout en liste blanche avec le caractère générique *, Vous autorisez un attaquant à charger du code (et à l'exécuter) de partout une fois qu'il est capable d'injecter du code dans votre application. Consultez l'article lié à ce sujet, il est beaucoup mieux que ce que j'écris ici;)

Alors, quelle est la bonne façon de procéder?

  1. Découvrez ce que les domaines que vous voulez whitelist et quel genre de ressources ce domaine fournit.
  2. Débarrassez-vous du caractère générique et de la liste blanche exactement ces domaines pour exactement les ressources dont vous avez besoin. Allons, par exemple, jetez un oeil à vos feuilles de style de GitHub. Vous devrez ajouter GitHub en tant que domaine fiable pour des styles un peu comme celui-ci: style-src 'self' https://github.com 'unsafe-inline';

Remarque: soyez prudent avec la politique default-src Car elle remplace les autres politiques. Et lorsqu'il s'agit de mettre des images sur liste blanche, vous devrez peut-être ajouter le mot clé data: Comme ceci: img-src 'self' http://somedomain.com data:;

documentation de Mozilla est assez bon si vous cherchez un aperçu de toutes les politiques et les mots clés ...

9
Phonolog

résolu avec:

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