Deaktivieren Sie die Firefox-Richtlinie für denselben Ursprung

110

Ich entwickle ein lokales Recherchetool, bei dem ich die gleiche Ursprungsrichtlinie von Firefox deaktivieren muss (in Bezug auf den Skriptzugriff interessieren mich domänenübergreifende Anfragen nicht wirklich).

Insbesondere möchte ich, dass Skripte in der Hostdomäne unabhängig von ihrer Domäne auf beliebige Elemente in allen auf der Seite eingebetteten Iframes zugreifen können.

Mir sind frühere Fragen und Antworten bekannt, in denen die CORS FF-Erweiterung erwähnt wurde, aber das ist nicht das, was ich brauche, da sie nur CORS erlaubt, aber keinen Skriptzugriff.

Wenn dies nicht einfach möglich ist, würde ich mich auch über Erkenntnisse freuen, die mich auf einen bestimmten Teil des FF-Quellcodes verweisen, den ich ändern kann, um SOP zu deaktivieren, damit ich FF neu kompilieren kann.

Yuchen Zhou
quelle
4
Für Entwickler wäre das eine interessante Sache. Da dieselbe Ursprungsrichtlinie für die Sicherheit der Benutzer und nicht der Entwickler entwickelt wurde, sollte es möglich sein, den Skripten der angegebenen Site zu erlauben, die Einschränkungen zu überschreiten. Entwickler sind aber auch Menschen, sodass Sie auch Ihre persönlichen Daten verlieren können.
Danubian Sailor
1
Ich glaube, es ist momentan
Rutsky
Die einzige gute Lösung besteht darin, die Header per Plugin basierend auf Domänen einzufügen : stackoverflow.com/a/44093160/956397 Alles andere ist unsicher ...
PiTheNumber

Antworten:

81

Es gibt eine Firefox-Erweiterung, die die CORS-Header zu jeder HTTP-Antwort hinzufügt, die mit dem neuesten Firefox ( Build 36.0.1 ) arbeitet, der am 5. März 2015 veröffentlicht wurde . Ich habe es getestet und es funktioniert sowohl unter Windows 7 als auch unter Mavericks. Ich werde Sie durch die Schritte führen, damit es funktioniert.

1) Die Erweiterung erhalten

Sie können entweder die xpi Download von hier (Autor baut) oder von hier (Spiegel, können nicht aktualisiert werden).

Oder laden Sie die Dateien von GitHub herunter . Jetzt ist es auch auf dem Firefox Marketplace: Hier herunterladen . In diesem Fall wird das Addon installiert, nachdem Sie auf Installieren geklickt haben, und Sie können mit Schritt 4 fortfahren.

Wenn Sie das xpi heruntergeladen haben, können Sie mit Schritt 3 fortfahren. Wenn Sie die Zip-Datei von GitHub heruntergeladen haben, fahren Sie mit Schritt 2 fort.

2) Erstellen des xpi

Sie müssen die Zip-Datei extrahieren, in den Ordner "cors -where-Firefox-Addon-Master" wechseln, alle Elemente auswählen und komprimieren. Benennen Sie dann die erstellte Zip-Datei in * .xpi um

Hinweis: Wenn Sie die OS X-GUI verwenden, werden möglicherweise einige versteckte Dateien erstellt, sodass Sie die Befehlszeile besser verwenden sollten.

3) Installieren des xpi

Sie können das xpi einfach per Drag & Drop auf Firefox ziehen oder zu "about: addons" gehen, auf das Zahnrad in der oberen rechten Ecke klicken und "Add-On aus Datei installieren" auswählen und dann Ihre .xpi-Datei auswählen. Starten Sie jetzt Firefox neu.

4) Damit es funktioniert

Jetzt funktioniert die Erweiterung standardmäßig nicht mehr. Sie müssen das Erweiterungssymbol in die Erweiterungsleiste ziehen, aber keine Sorge. Es gibt Bilder!

  • Klicken Sie auf das Firefox-Menü
  • Klicken Sie auf Anpassen

p1

  • Ziehen Sie CorsE in die Leiste
  • Klicken Sie nun auf das Symbol. Wenn es grün ist, werden die CORS-Header zu jeder HTTP-Antwort hinzugefügt

p2

5) Testen, ob es funktioniert

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) Abschließende Überlegungen

Beachten Sie, dass https to http nicht zulässig ist .

Es mag einen Weg geben, aber es liegt hinter dem Umfang der Frage.

Giacomo Tecya Pigani
quelle
1
Sie können deaktivieren HTTP / HTTPS gemischten Content - Schutz , indem Sie security.mixed_content.block_active_contentauf falsche und security.mixed_content.block_display_contentzu wahren . Denken Sie daran, dass Sie die Sicherheit deaktivieren und dies eine vorübergehende Lösung sein sollte.
bufh
4
Als Autor dieses Addons bin ich nicht wirklich davon überzeugt, dass es diese spezielle Frage lösen würde. Es ist jedoch schön, eine Erwähnung zu bekommen.
Spenibus
2
@spenibus - Sie sollten Ihr Add-On signieren lassen - Ich kann es nicht installieren :( - support.mozilla.org/en-US/kb/…
Peter Ajtai
3
@ PeterAjtai Mozilla bemüht sich immer wieder, mich zu ärgern, wie ich sehe. Warten auf Überprüfung: addons.mozilla.org/en-US/firefox/addon/cors-everywhere Sollte hoffentlich automatisch signiert werden.
Spenibus
1
in about: config setze xpinstall.signatures.required auf false , um das Addon zu installieren. Es hat bei mir funktioniert.
user2345998
41
about:config -> security.fileuri.strict_origin_policy -> false
Niklas
quelle
21
Vielen Dank an @Niklas, ich denke jedoch, dass dies nur die Überprüfung der Dateuri-Richtlinien für denselben Ursprung deaktiviert - wahrscheinlich für lokale Webentwicklungstests. Es hält mich immer noch auf, wenn ich versuche, über ein JavaScript in Domäne A auf DOM-Knoten in einem Iframe mit Domäne B zuzugreifen.
Yuchen Zhou
127
das macht nichts
vknyvz
2
Bestätigt, dass es in meiner Firefox (Entwickler) -Version funktioniert: 40. Vielen Dank für den Tipp @Niklas.
bufh
11
Dies ist eine Einstellung speziell für das Debuggen und steuert den Zugriff lokaler Dateien auf andere lokale Dateien (auf true gesetzt, kann eine lokale Datei nur auf lokale Dateien in demselben Ordner oder Unterordner zugreifen, auf false gesetzt, eine lokale Datei kann auf alle lokalen Dateien zugreifen). . Quelle
Jon Egerton
4
Es macht etwas, in meinem Fall ermöglicht es mir, von einem Dokument, das über ein file://Protokoll bereitgestellt wird, auf lokale Ressourcen zuzugreifen . Informatiker sollten dem Wort "irgendetwas" mehr Gewicht beimessen - wenn Sie nicht alles getestet haben (was Sie nicht haben), versuchen Sie, mit Ihren Bemerkungen konservativer umzugehen. Gleiches gilt für die Verwendung des Wortes "nutzlos".
amn
12

Ich habe festgestellt, dass meine ältere Antwort abgelehnt wurde, weil ich nicht angegeben habe, wie die gleiche Ursprungsrichtlinie von FF speziell deaktiviert werden soll. Hier werde ich eine detailliertere Antwort geben:

Warnung: Dies erfordert eine Neukompilierung von FF, und die neu kompilierte Version von Firefox kann SOP nicht wieder aktivieren .

Überprüfen Sie den Quellcode von Mozilla Firefox und finden Sie nsScriptSecurityManager.cpp im Verzeichnis src. Ich werde das hier aufgeführte als Beispiel verwenden: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Wechseln Sie zur Funktionsimplementierung nsScriptSecurityManager :: CheckSameOriginURI, Zeile 568 zum Datum 03.02.2016.

Stellen Sie sicher, dass diese Funktion immer NS_OK zurückgibt.

Dadurch wird SOP endgültig deaktiviert.

Die Browser-Addon-Antwort von @Giacomo sollte für die meisten Menschen nützlich sein, und ich habe diese Antwort akzeptiert. Für meine persönlichen Forschungsbedürfnisse (TL; wird hier nicht erklärt) reicht sie jedoch nicht aus, und ich denke, andere Forscher müssen möglicherweise was tun Ich habe hier getan, um SOP vollständig zu töten.

Yuchen Zhou
quelle
Zeile 499 ab heute, Git-Spiegel: github.com/mozilla/gecko-dev/blob/…
kamranicus
3

Ab September 2016 ist dieses Addon das beste, um CORS zu deaktivieren : https://github.com/fredericlb/Force-CORS/releases

Im Optionsfeld können Sie konfigurieren, welcher Header eingefügt werden soll und welche Website automatisch aktiviert werden soll.

Geben Sie hier die Bildbeschreibung ein

Khado Mikhal
quelle
1
Von wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: In Release- und Beta-Versionen von Firefox for Desktop können nicht signierte Erweiterungen ohne Überschreibung nicht installiert werden. Ich konnte keine signierte Version dieses Addons finden.
FelixM
1
@FelixM So geht's: ghacks.net/2016/08/14/…
Khado Mikhal
@FelixM Firefox Developer Edition hat eine Option "xpinstall.signatures.required" boolean in den Flags "about: config". Version 0.1.1 dieser Erweiterung ist jedoch nicht mit Firefox Developer Edition 58.0 (Quantum) kompatibel.
Alxndr
2

Das Cors-Überall- Addon funktioniert für mich bis Firefox 68, nach 68 muss ich 'privacy.file_unique_origin' -> false (durch Öffnen von 'about: config') anpassen, um ' CORS-Anforderung nicht HTTP ' für die neue CORS-Regel gleichen Ursprungs zu lösen eingeführt.

ob.yann
quelle
1

In about:configadd content.cors.disable(leere Zeichenfolge).

ghst
quelle
1
Wurde dies getestet? Nach dem, was ich lese, wurde diese Voreinstellung so konzipiert, dass alle CORS-Anforderungen fehlschlagen, wenn sie auf gesetzt sind true, aber nichts über falseoder andere Werte aussagen . "In Firefox ist die Einstellung, die CORS deaktiviert, content.cors.disable. Wenn Sie dies auf true setzen, wird CORS deaktiviert. Wenn dies der Fall ist, schlagen CORS-Anforderungen immer mit diesem Fehler fehl." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja
Ab Firefox 68.7 ist diese Einstellung nicht einmal verfügbar.
Gunnar Bernstein