Disabilita la stessa politica di origine di Firefox


110

Sto sviluppando uno strumento di ricerca locale che mi richiede di disattivare la stessa politica di origine di Firefox (in termini di accesso agli script, non mi interessano molto le richieste interdominio).

Più specificamente, desidero che gli script nel dominio host siano in grado di accedere a elementi arbitrari in qualsiasi iframe incorporato nella pagina, indipendentemente dal loro dominio.

Sono a conoscenza delle precedenti domande e risposte che menzionavano l'estensione CORS FF, ma non è ciò di cui ho bisogno, poiché consente solo CORS, ma non l'accesso agli script.

Se non può essere fatto facilmente, apprezzerei anche qualsiasi approfondimento che mi indichi una parte specifica del codice FF src che posso modificare per disabilitare SOP, in modo da poter ricompilare FF.


4
Sarebbe una cosa interessante con gli sviluppatori. Poiché la stessa politica di origine è progettata per la sicurezza degli utenti e non degli sviluppatori, dovrebbe essere possibile consentire agli script di un determinato sito di superare le restrizioni. Ma gli sviluppatori sono anche persone, quindi potresti perdere anche le tue informazioni personali.
Marinaio

1
Credo che non sia possibile in questo momento, ecco la relativa segnalazione di bug in Firefox Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky

Solo buona soluzione è quello di iniettare le intestazioni dal plug-in base a domini: stackoverflow.com/a/44093160/956397 everthing altro è insicuro ...
PiTheNumber

Risposte:


82

C'è un'estensione per Firefox che aggiunge le intestazioni CORS a qualsiasi risposta HTTP funzionante sull'ultimo Firefox ( build 36.0.1 ) rilasciato il 5 marzo 2015 . L'ho testato e funziona sia su Windows 7 che su Mavericks. Ti guiderò attraverso i passaggi per farlo funzionare.

1) Ottenere l'estensione

Puoi scaricare l'xpi da qui (build dell'autore) o da qui (mirror, potrebbe non essere aggiornato).

Oppure scarica i file da GitHub. Ora è anche su Firefox Marketplace: scaricalo qui . In questo caso, l'addon viene installato dopo aver fatto clic su Installa e puoi andare al passaggio 4.

Se hai scaricato l'xpi puoi andare al passaggio 3. Se hai scaricato lo zip da GitHub, vai al passaggio 2.

2) Costruire il file xpi

È necessario estrarre lo zip, entrare nella cartella "cors-ovunque-firefox-addon-master", selezionare tutti gli elementi e comprimerli. Quindi, rinomina lo zip creato come * .xpi

Nota: se stai usando la GUi di OS X, potrebbe creare alcuni file nascosti, quindi sarebbe meglio usare la riga di comando.

3) Installazione di xpi

Puoi semplicemente trascinare e rilasciare l'xpi su Firefox, o andare su: "about: addons", fare clic sull'ingranaggio nell'angolo in alto a destra e selezionare "installa componente aggiuntivo da file", quindi selezionare il file .xpi. Ora riavvia Firefox.

4) Farlo funzionare

Ora l'estensione non funzionerà per impostazione predefinita. È necessario trascinare l'icona dell'estensione sulla barra delle estensioni, ma non preoccuparti. Ci sono immagini!

  • Fare clic sul menu Firefox
  • Fare clic su Personalizza

p1

  • Trascina CorsE sulla barra
  • Ora, fai clic sull'icona, quando è verde le intestazioni CORS verranno aggiunte a qualsiasi risposta HTTP

p2

5) Verifica se funziona

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) Considerazioni finali

Tieni presente che da https a http non è consentito .

Potrebbe esserci un modo per aggirarlo, ma è dietro lo scopo della domanda.


1
È possibile disabilitare la protezione del contenuto misto HTTP / HTTPS impostando security.mixed_content.block_active_contentsu false e security.mixed_content.block_display_contentsu true . Tieni presente che stai disabilitando un po 'di sicurezza e questa dovrebbe essere una soluzione temporanea.
bufh

4
In qualità di autore di questo componente aggiuntivo, non sono effettivamente convinto che risolverebbe questa particolare domanda. È bello ricevere una menzione però.
spenibus

2
@spenibus - dovresti far firmare il tuo componente aggiuntivo - Non riesco a installarlo :( - support.mozilla.org/en-US/kb/…
Peter Ajtai

3
@PeterAjtai Mozilla continua a cercare di infastidirmi, vedo. In attesa di revisione: addons.mozilla.org/en-US/firefox/addon/cors-everywhere Si spera che venga firmato automaticamente.
spenibus

1
in about: config set xpinstall.signatures.required to false to install the addon. Ha funzionato per me.
user2345998

43
about:config -> security.fileuri.strict_origin_policy -> false

21
Grazie @ Niklas, tuttavia, penso che questo disabiliti solo i controlli dei criteri di origine dei fileuri, probabilmente utilizzati per i test di sviluppo web locale. Mi blocca ancora quando cerco di accedere ai nodi DOM in un iframe con dominio B da JavaScript nel dominio A.
Yuchen Zhou

127
questo non fa nulla
vknyvz

2
Confermato che funziona nella mia versione per firefox (sviluppatore): 40. Grazie per il suggerimento @Niklas.
bufh

11
Questa è un'impostazione specifica per il debug e controlla l'accesso di un file locale ad altri file locali (impostato su true un file locale può accedere solo ai file locali nella stessa cartella o sottocartelle, impostato su false un file locale può accedere a tutti i file locali) . Fonte
Jon Egerton,

5
Si fa fare qualcosa, nel mio caso mi permette di accedere alle risorse locali da un documento servito oltre file://il protocollo. Gli informatici dovrebbero dare più peso alla parola "qualsiasi cosa" - a meno che tu non abbia testato tutto ( cosa che non hai), cerca di essere più conservatore con le tue osservazioni. Lo stesso vale per l'uso della parola "inutile".
amn

12

Mi sono reso conto che la mia risposta precedente è stata sottovalutata perché non ho specificato come disabilitare specificamente la stessa politica di origine di FF. Qui darò una risposta più dettagliata:

Attenzione: questo richiede una ricompilazione di FF e la versione appena compilata di Firefox non sarà in grado di abilitare nuovamente SOP.

Controlla il codice sorgente di Mozilla Firefox, trova nsScriptSecurityManager.cpp nella directory src. Userò quello elencato qui come esempio: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Vai all'implementazione della funzione nsScriptSecurityManager :: CheckSameOriginURI, che è la riga 568 a partire dalla data 03/02/2016.

Fai in modo che quella funzione restituisca sempre NS_OK.

Questo disabiliterà SOP per sempre.

La risposta del componente aggiuntivo del browser di @Giacomo dovrebbe essere utile per la maggior parte delle persone e ho accettato quella risposta, tuttavia, per le mie esigenze di ricerca personali (TL; non spiegherò qui) non è sufficiente e immagino che altri ricercatori potrebbero aver bisogno di fare cosa L'ho fatto qui per uccidere completamente SOP.


Riga 499 ad oggi, mirror Git: github.com/mozilla/gecko-dev/blob/…
kamranicus


3

A partire da settembre 2016 questo componente aggiuntivo è il migliore per disabilitare CORS : https://github.com/fredericlb/Force-CORS/releases

Nel pannello delle opzioni puoi configurare quale intestazione iniettare e sito web specifico per averla abilitata automaticamente.

inserisci qui la descrizione dell'immagine


1
Da wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: le versioni Release e Beta di Firefox per Desktop non consentiranno l'installazione di estensioni non firmate, senza override. Non sono riuscito a trovare una versione firmata di questo componente aggiuntivo.
FelixM

1
@FelixM Ecco come farlo: ghacks.net/2016/08/14/…
Khado Mikhal

@FelixM Firefox Developer Edition ha un'opzione "xpinstall.signatures.required" booleano nei flag "about: config". Tuttavia, la versione 0.1.1 di questa estensione non è compatibile con Firefox Developer Edition 58.0 (Quantum).
alxndr

2

L' addon cors-ovunque funziona per me fino a Firefox 68, dopo il 68 devo regolare 'privacy.file_unique_origin' -> false (aprendo 'about: config') per risolvere la ' richiesta CORS non HTTP ' per la nuova regola CORS della stessa origine introdotto.


1

In about:configadd content.cors.disable(stringa vuota).


1
Questo è stato testato? Da quello che sto leggendo, questa pref è stata progettata per far fallire tutte le richieste CORS quando impostata su true, ma non dice nulla su falseo altri valori. "In Firefox, la preferenza che disabilita CORS è content.cors.disable. L'impostazione di questo valore su true disabilita CORS, quindi ogni volta che è il caso, le richieste CORS falliranno sempre con questo errore." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja,

A partire da Firefox 68.7 questa impostazione non è nemmeno disponibile.
Gunnar Bernstein
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.