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.
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?
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 ...
résolu avec:
script-src 'self' http://xxxx 'unsafe-inline' 'unsafe-eval';