Comment assouplir la politique de sécurité du contenu dans Chrome?


18

Dernièrement, certains sites Web tels que Facebook utilisent la politique de sécurité du contenu (CSP) pour restreindre le chargement de scripts à partir de "sources non fiables". Par exemple, lors de la demande de contenu HTML Facebook (par exemple https://www.facebook.com ), la réponse HTTP de Facebook comprend l'en-tête de réponse suivant:

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

Cela a un impact sur certains bookmarklets qui nécessitent de charger et d'exécuter des bibliothèques Javascript à partir de sources non fiables.

Par exemple, chaque fois que j'essaie d'exécuter le bookmarklet Show Anchors sur une page Facebook, l'exécution de ce bookmarklet échoue car il essaie de charger jQuery à partir d'une source non fiable. Dans la console développeur de Chrome, il indiquera:

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

J'ai trouvé une page de documentation Chrome sur ce sujet, mais elle ne s'applique qu'aux extensions Chrome .

Je recherche des solutions qui me permettent de

  • soit pour une seule fois désactiver CSP
  • ou ajouter définitivement à la liste blanche mes sources de confiance.


@Rudie Cela fonctionnera-t-il pour Chrome Mobile?
Michael

@Michael If Chrome Mobile prend en charge les extensions modernes. Le WeRequest est un peu nouveau. Je n'utilise pas Chrome Mobile, donc je n'en ai aucune idée.
Rudie

Réponses:


2

Méthodes approuvées par Chrome Apps

Utiliser des bibliothèques de modèles

Utilisez une bibliothèque qui propose des modèles précompilés et tout est prêt. Vous pouvez toujours utiliser une bibliothèque qui n'offre pas de précompilation, mais cela nécessitera un certain travail de votre part et il y a des restrictions.

Vous devrez utiliser le sandboxing pour isoler tout contenu auquel vous souhaitez faire des choses «valables». Le sandboxing soulève CSP sur le contenu que vous spécifiez.

Contenu local Sandbox

Le sandboxing permet aux pages spécifiées d'être servies dans une origine unique en sandbox. Ces pages sont ensuite exemptées de leur politique de sécurité du contenu. Les pages en bac à sable peuvent utiliser des iframes, des scripts en ligne et eval () (et les deux derniers sont ceux qui sont empêchés). Cela corrigera «unsafe-inline» et «unsafe-eval».

  • Utiliser des scripts en ligne dans le bac à sable
  • Inclure le bac à sable dans le manifeste

Accéder aux ressources distantes

Vous pouvez récupérer des ressources distantes via XMLHttpRequest et les servir via blob :, data :, ou système de fichiers: URL. Cela devrait résoudre le problème de récupération de jQuery.

Exigence du manifeste

Pour pouvoir effectuer une origine croisée XMLHttpRequests, vous devrez ajouter une autorisation pour l'hôte de l'URL distante.

Origine croisée XMLHttpRequest

Récupérez l'URL distante dans l'application et servez son contenu en tant blob:qu'URL.


Je ne pense pas que vous puissiez faire cela. Pour corriger les en unsafe-eval- unsafe-inlinetêtes et réponse, seul le propriétaire du script peut corriger le code ou s'il est dans le domaine public, vous pouvez le corriger. Tout cela est probablement une solution unique.


Hacks

UnsafeWindow

http://wiki.greasespot.net/UnsafeWindow

Injection de script de contenu

http://wiki.greasespot.net/Content_Script_Injection


Les hacks ont cependant des inconvénients, car ils ont certainement causé des failles de sécurité au moins le premier.


0

Vous pouvez modifier ces paramètres dans l'onglet de contenu, auquel vous pouvez accéder directement en tapant chrome://settings/contentdans la barre d'adresse. Vous pouvez mettre en liste blanche des domaines spécifiques sur des types de contenu spécifiques.


9
Où exactement dans les paramètres de contenu dois-je procéder et comment? J'ai essayé d'ajouter mon site aux "exceptions relatives aux cookies et aux données du site" sans résultat. Aucun des autres paramètres ne semble pertinent.
Michael
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.