Désactiver la politique de même origine de Firefox

110

Je développe un outil de recherche local qui m'oblige à désactiver la même politique d'origine de Firefox (en termes d'accès aux scripts, je ne me soucie pas vraiment des requêtes interdomaines).

Plus précisément, je souhaite que les scripts du domaine hôte puissent accéder à des éléments arbitraires dans tous les iframes intégrés dans la page, quel que soit leur domaine.

Je connais les questions et réponses précédentes qui mentionnaient l'extension CORS FF, mais ce n'est pas ce dont j'ai besoin, car elle n'autorise que CORS, mais pas l'accès au script.

Si cela ne peut pas être fait facilement, j'apprécierais également toutes les informations qui m'indiquent une partie spécifique du code FF src que je peux modifier pour désactiver SOP, afin que je puisse recompiler FF.

Yuchen Zhou
la source
4
Ce serait une chose intéressante avec les développeurs. Étant donné que la même politique d'origine est conçue pour la sécurité des utilisateurs et non des développeurs, il devrait être possible de permettre aux scripts du site donné de franchir les restrictions. Mais les développeurs sont aussi des personnes, vous pouvez donc également perdre vos informations personnelles.
Danubian Sailor
1
Je crois que ce n'est pas possible pour le moment, voici le rapport de bogue lié dans Firefox Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky
La seule bonne solution est d'injecter les en-têtes par plugin en fonction des domaines: stackoverflow.com/a/44093160/956397 Tout le reste n'est pas sécurisé ...
PiTheNumber

Réponses:

82

Il existe une extension Firefox qui ajoute les en-têtes CORS à toute réponse HTTP fonctionnant sur le dernier Firefox ( build 36.0.1 ) publié le 5 mars 2015 . Je l'ai testé et il fonctionne à la fois sur Windows 7 et Mavericks. Je vais vous guider à travers les étapes pour le faire fonctionner.

1) Obtenir l'extension

Vous pouvez télécharger le xpi d' ici (builds de l'auteur) ou d' ici (miroir, peut ne pas être mis à jour).

Ou téléchargez les fichiers depuis GitHub. Maintenant, c'est aussi sur Firefox Marketplace: téléchargez ici . Dans ce cas, l'addon est installé après avoir cliqué sur installer et vous pouvez passer à l'étape 4.

Si vous avez téléchargé le xpi, vous pouvez passer à l'étape 3. Si vous avez téléchargé le zip depuis GitHub, passez à l'étape 2.

2) Construire le xpi

Vous devez extraire le zip, entrer dans le dossier "cors-partout-firefox-addon-master", sélectionner tous les éléments et les compresser. Ensuite, renommez le zip créé en * .xpi

Remarque: Si vous utilisez l 'interface graphique OS X, il se peut que des fichiers cachés soient créés, vous feriez donc mieux d' utiliser la ligne de commande.

3) Installation du xpi

Vous pouvez simplement faire glisser et déposer le xpi sur Firefox, ou aller à: "about: addons", cliquer sur le rouage en haut à droite et sélectionner "installer le module complémentaire à partir du fichier", puis sélectionner votre fichier .xpi. Maintenant, redémarrez Firefox.

4) Le faire fonctionner

Désormais, l'extension ne fonctionnera pas par défaut. Vous devez faire glisser l'icône d'extension vers la barre d'extension, mais ne vous inquiétez pas. Il y a des photos!

  • Cliquez sur le menu Firefox
  • Cliquez sur Personnaliser

p1

  • Faites glisser CorsE vers la barre
  • Maintenant, cliquez sur l'icône, quand elle est verte, les en-têtes CORS seront ajoutés à toute réponse HTTP

p2

5) Tester si cela fonctionne

jQuery

$.get( "http://example.com/", function( data ) {
  console.log (data);
});

JavaScript

xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        console.log(xmlhttp.responseText);
    }
}

xmlhttp.open("GET","http://example.com/");
xmlhttp.send();

6) Considérations finales

Notez que https vers http n'est pas autorisé .

Il y a peut-être un moyen de contourner cela, mais c'est derrière la portée de la question.

Giacomo Tecya Pigani
la source
1
Vous pouvez désactiver la protection de contenu mixte HTTP / HTTPS en définissant security.mixed_content.block_active_contentsur false et security.mixed_content.block_display_contentsur true . Gardez à l'esprit que vous désactivez une partie de la sécurité et que cela devrait être une solution temporaire.
bufh
4
En tant qu'auteur de cet addon, je ne suis pas convaincu qu'il résoudrait cette question particulière. C'est bien d'avoir une mention cependant.
spenibus
2
@spenibus - vous devriez faire signer votre add-on - Je ne peux pas l'installer :( - support.mozilla.org/en-US/kb/…
Peter Ajtai
3
@PeterAjtai Mozilla continue d'essayer de m'ennuyer, je vois. En attente d'examen: addons.mozilla.org/en-US/firefox/addon/cors-everywhere devrait, espérons-le, être signé automatiquement.
spenibus
1
dans about: config définissez xpinstall.signatures.required sur false pour installer l'addon. Cela a fonctionné pour moi.
user2345998
43
about:config -> security.fileuri.strict_origin_policy -> false
Niklas
la source
21
Merci @Niklas, cependant, je pense que cela ne désactive que les vérifications de la même politique d'origine de fileuri - probablement utilisées pour les tests de développement Web locaux. Cela m'arrête toujours lorsque j'essaye d'accéder aux nœuds DOM dans une iframe avec le domaine B à partir d'un JavaScript dans le domaine A.
Yuchen Zhou
127
cela ne fait rien
vknyvz
2
Confirmé que cela fonctionne dans ma version Firefox (développeur): 40. Merci pour le conseil @Niklas.
bufh
11
Ceci est un paramètre spécifiquement pour le débogage, et contrôle l'accès aux fichiers locaux à d'autres fichiers locaux (défini sur true, un fichier local ne peut accéder qu'aux fichiers locaux dans le même dossier ou sous-dossiers, défini sur false, un fichier local peut accéder à tous les fichiers locaux) . Source
Jon Egerton
5
Cela fait quelque chose, dans mon cas, cela me permet d'accéder aux ressources locales à partir d'un document servi via un file://protocole. Les informaticiens devraient donner plus de poids au mot «n'importe quoi» - à moins que vous n'ayez tout testé (ce que vous n'avez pas), essayez d'être plus conservateur dans vos remarques. Il en va de même pour l'utilisation du mot «inutile».
amn
12

J'ai réalisé que mon ancienne réponse était rejetée car je n'ai pas spécifié comment désactiver spécifiquement la même politique d'origine de FF. Ici, je vais donner une réponse plus détaillée:

Attention: Cela nécessite une nouvelle compilation de FF, et la nouvelle version compilée de Firefox ne sera pas en mesure de permettre à nouveau SOP.

Consultez le code source de Firefox de Mozilla, trouvez nsScriptSecurityManager.cpp dans le répertoire src. J'utiliserai celui listé ici comme exemple: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Accédez à l'implémentation de la fonction nsScriptSecurityManager :: CheckSameOriginURI, qui correspond à la ligne 568 à la date du 03/02/2016.

Faites en sorte que cette fonction renvoie toujours NS_OK.

Cela désactivera le SOP pour de bon.

La réponse de l'addon du navigateur de @Giacomo devrait être utile pour la plupart des gens et j'ai accepté cette réponse, cependant, pour mes besoins de recherche personnels (TL; je ne l'expliquerai pas ici), ce n'est pas suffisant et je pense que d'autres chercheurs devront peut-être faire quoi. Je l'ai fait ici pour tuer complètement SOP.

Yuchen Zhou
la source
Ligne 499 à partir d'aujourd'hui, miroir Git: github.com/mozilla/gecko-dev/blob/…
kamranicus
3

Depuis septembre 2016, cet addon est le meilleur pour désactiver CORS : https://github.com/fredericlb/Force-CORS/releases

Dans le panneau d'options, vous pouvez configurer l'en-tête à injecter et le site Web spécifique pour l'activer automatiquement.

entrez la description de l'image ici

Khado Mikhal
la source
1
Depuis wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: Les versions Release et Beta de Firefox pour Desktop ne permettront pas l'installation d'extensions non signées, sans remplacement. Je n'ai pas trouvé de version signée de cet addon.
FelixM
1
@FelixM Voici comment faire: ghacks.net/2016/08/14/…
Khado Mikhal
@FelixM Firefox Developer Edition a une option booléenne "xpinstall.signatures.required" dans les indicateurs "about: config". Cependant, la version 0.1.1 de cette extension n'est pas compatible avec Firefox Developer Edition 58.0 (Quantum).
alxndr
2

L' addon cors-partout fonctionne pour moi jusqu'à Firefox 68, après 68 je dois ajuster 'privacy.file_unique_origin' -> false (en ouvrant 'about: config') pour résoudre ' CORS request not HTTP ' pour la nouvelle règle CORS de même origine introduit.

ob.yann
la source
1

In about:configadd content.cors.disable(chaîne vide).

ghst
la source
1
Cela a-t-il été testé? D'après ce que je lis, ce pref a été conçu pour faire échouer toutes les requêtes CORS lorsqu'il est défini sur true, mais ne dit rien sur falseou d'autres valeurs. "Dans Firefox, la préférence qui désactive CORS est content.cors.disable. Définir ceci sur true désactive CORS, donc chaque fois que c'est le cas, les requêtes CORS échoueront toujours avec cette erreur." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja
Depuis Firefox 68.7, ce paramètre n'est même pas disponible.
Gunnar Bernstein le