Wyłącz zasady tego samego pochodzenia w przeglądarce Firefox

110

Tworzę lokalne narzędzie badawcze, które wymaga ode mnie wyłączenia zasad tego samego pochodzenia w Firefoksie (jeśli chodzi o dostęp do skryptu, nie obchodzą mnie żądania między domenami).

Mówiąc dokładniej, chcę, aby skrypty w domenie hosta miały dostęp do dowolnych elementów w dowolnych elementach iframe osadzonych na stronie, niezależnie od ich domeny.

Znam poprzednie pytania i odpowiedzi, w których wspomniano o rozszerzeniu CORS FF, ale nie tego potrzebuję, ponieważ zezwala tylko na CORS, ale nie na dostęp do skryptu.

Jeśli nie można tego łatwo zrobić, byłbym również wdzięczny za wszelkie spostrzeżenia, które wskazują mi określoną część kodu FF src, którą mogę zmodyfikować, aby wyłączyć SOP, aby móc ponownie skompilować FF.

Yuchen Zhou
źródło
4
To byłaby interesująca rzecz dla programistów. Ponieważ ta sama polityka pochodzenia ma na celu bezpieczeństwo użytkowników, a nie programistów, powinno być możliwe zezwolenie skryptom z danej witryny na przechodzenie przez ograniczenia. Ale programiści to także ludzie, więc możesz również stracić swoje dane osobowe.
Żeglarz naddunajski,
1
Uważam, że w tej chwili nie jest to możliwe, tutaj jest powiązany raport o błędzie w Firefoksie Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky
Tylko dobrym rozwiązaniem jest wstrzykiwać nagłówki przez plugin na podstawie domen: stackoverflow.com/a/44093160/956397 Everthing jeszcze jest niepewny ...
PiTheNumber

Odpowiedzi:

82

Istnieje rozszerzenie przeglądarki Firefox, które dodaje nagłówki CORS do każdej odpowiedzi HTTP działającej w najnowszej wersji przeglądarki Firefox ( kompilacja 36.0.1 ) wydanej 5 marca 2015 r . Przetestowałem to i działa zarówno na Windows 7, jak i na Mavericks. Przeprowadzę Cię przez wszystkie kroki, aby to działało.

1) Uzyskanie rozszerzenia

Możesz pobrać xpi stąd (kompilacje autorskie) lub stąd (kopia lustrzana, może nie być aktualizowana).

Lub pobierz pliki z GitHub. Teraz jest również w Firefox Marketplace: Pobierz tutaj . W takim przypadku dodatek jest instalowany po kliknięciu przycisku instalacji i można przejść do kroku 4.

Jeśli pobrałeś xpi, możesz przejść do kroku 3. Jeśli pobrałeś zip z GitHub, przejdź do kroku 2.

2) Budowanie xpi

Musisz rozpakować plik zip, dostać się do folderu „cors-wszędzie-firefox-addon-master”, zaznaczyć wszystkie elementy i spakować je. Następnie zmień nazwę utworzonego pliku ZIP na * .xpi

Uwaga: jeśli używasz interfejsu GUI OS X, może on tworzyć ukryte pliki, więc lepiej byłoby używać wiersza poleceń.

3) Instalowanie xpi

Możesz po prostu przeciągnąć i upuścić xpi do przeglądarki Firefox lub przejść do: „about: addons”, kliknąć zębatkę w prawym górnym rogu i wybrać „zainstaluj dodatek z pliku”, a następnie wybrać plik .xpi. Teraz uruchom ponownie przeglądarkę Firefox.

4) Uruchomienie tego

Teraz rozszerzenie nie będzie działać domyślnie. Musisz przeciągnąć ikonę rozszerzenia na pasek rozszerzeń, ale nie martw się. Są zdjęcia!

  • Kliknij menu Firefox
  • Kliknij Dostosuj

p1

  • Przeciągnij CorsE do baru
  • Teraz kliknij ikonę, gdy będzie zielona, ​​nagłówki CORS zostaną dodane do każdej odpowiedzi HTTP

p2

5) Testowanie, czy działa

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) Uwagi końcowe

Zauważ, że https do http nie jest dozwolone .

Może istnieje sposób na obejście tego problemu, ale to leży poza zakresem pytania.

Giacomo Tecya Pigani
źródło
1
Może wyłączyć HTTP / HTTPS mieszane ochrony zawartości poprzez ustawienie security.mixed_content.block_active_contentna false i security.mixed_content.block_display_contentna prawdziwe . Pamiętaj, że wyłączasz niektóre zabezpieczenia i powinno to być rozwiązanie tymczasowe.
bufh
4
Jako autor tego dodatku nie jestem do końca przekonany, że rozwiąże to konkretne pytanie. Miło jest jednak dostać wzmiankę.
spenibus
2
@spenibus - Twój dodatek powinien zostać podpisany - nie mogę go zainstalować :( - support.mozilla.org/en-US/kb/...
Peter Ajtai
3
@PeterAjtai Mozilla wciąż stara się mnie zdenerwować. Oczekiwanie na recenzję: addons.mozilla.org/en-US/firefox/addon/cors-everywhere Powinien mieć nadzieję, że zostanie automatycznie podpisany.
spenibus
1
in about: config ustaw xpinstall.signatures.required na false, aby zainstalować dodatek. U mnie to zadziałało.
user2345998
44
about:config -> security.fileuri.strict_origin_policy -> false
Niklas
źródło
21
Dzięki @Niklas, myślę jednak, że to tylko wyłącza sprawdzanie zasad fileuri tego samego pochodzenia - prawdopodobnie używane do testowania lokalnych programistów internetowych. Wciąż mnie to zatrzymuje, gdy próbuję uzyskać dostęp do węzłów DOM w
ramce
127
to nic nie robi
vknyvz
2
Potwierdziłem, że działa w mojej wersji Firefox (programisty): 40. Dziękuję za wskazówkę @Niklas.
bufh
11
Jest to ustawienie przeznaczone specjalnie do debugowania i kontroluje dostęp plików lokalnych do innych plików lokalnych (ustawione na true, plik lokalny może uzyskiwać dostęp tylko do plików lokalnych w tym samym folderze lub podfolderach, ustawione na false, plik lokalny może uzyskać dostęp do wszystkich plików lokalnych) . Źródło
Jon Egerton,
5
To jest coś, w moim przypadku to pozwala mi dostęp do lokalnych zasobów z dokumentu służył nad file://protokołem. Informatycy powinni przykładać większą wagę do słowa „cokolwiek” - chyba że przetestowałeś wszystko (czego nie zrobiłeś), staraj się być bardziej konserwatywnym w swoich uwagach. To samo dotyczy słowa „bezużyteczny”.
amn
12

Zdałem sobie sprawę, że moja starsza odpowiedź została odrzucona, ponieważ nie określiłem, jak konkretnie wyłączyć tę samą politykę pochodzenia FF. Tutaj podam bardziej szczegółową odpowiedź:

Ostrzeżenie: Wymaga to ponownej kompilacji FF, a nowo skompilowana wersja przeglądarki Firefox nie będzie mogła ponownie włączyć SOP.

Sprawdź kod źródłowy Mozilli Firefox, znajdź nsScriptSecurityManager.cpp w katalogu src. Jako przykład użyję tego wymienionego tutaj: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Przejdź do implementacji funkcji nsScriptSecurityManager :: CheckSameOriginURI, czyli linii 568 z dnia 03/02/2016.

Spraw, aby ta funkcja zawsze zwracała NS_OK.

To wyłączy SOP na dobre.

Odpowiedź dodatku do przeglądarki autorstwa @Giacomo powinna być przydatna dla większości ludzi i zaakceptowałem tę odpowiedź, jednak ze względu na moje osobiste potrzeby badawcze (TL; nie wyjaśniam tutaj), to nie wystarczy i myślę, że inni badacze mogą potrzebować zrobić to, co Zrobiłem tutaj, aby całkowicie zabić SOP.

Yuchen Zhou
źródło
Linia 499 od dzisiaj, lustro Git: github.com/mozilla/gecko-dev/blob/…
kamranicus
3

Od września 2016 roku ten dodatek najlepiej wyłącza CORS : https://github.com/fredericlb/Force-CORS/releases

W panelu opcji możesz skonfigurować, który nagłówek wstawić i konkretną witrynę internetową, aby była włączana automatycznie.

wprowadź opis obrazu tutaj

Khado Mikhal
źródło
1
Z wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: wersje Release i Beta Firefoksa na komputery stacjonarne nie pozwalają na instalowanie niepodpisanych rozszerzeń bez nadpisywania. Nie mogłem znaleźć podpisanej wersji tego dodatku.
FelixM
1
@FelixM Oto jak to zrobić: ghacks.net/2016/08/14/...
Khado Mikhal
@FelixM Firefox Developer Edition ma opcję „xpinstall.signatures.required” jako wartość logiczną we flagach „about: config”. Jednak wersja 0.1.1 tego rozszerzenia nie jest kompatybilna z Firefox Developer Edition 58.0 (Quantum).
alxndr
2

Dodatek cors-wszędzie działa dla mnie do Firefoksa 68, po 68 muszę dostosować „privacy.file_unique_origin” -> false (przez open „about: config”), aby rozwiązać „ żądanie CORS nie HTTP ” dla nowej reguły CORS tego samego pochodzenia wprowadzone.

ob.yann
źródło
1

W about:configdodatku content.cors.disable(pusty ciąg).

ghst
źródło
1
Czy to zostało przetestowane? Z tego, co czytam, ten pref został zaprojektowany tak, aby wszystkie żądania CORS kończyły się niepowodzeniem, gdy są ustawione na true, ale nic nie mówią o falseani innych wartościach. „W przeglądarce Firefox preferencją wyłączającą CORS jest content.cors.disable. Ustawienie tej wartości na true wyłącza CORS, więc w takim przypadku żądania CORS zawsze kończą się niepowodzeniem z tym błędem”. developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/ ...
stealththeninja
W Firefoksie 68.7 to ustawienie nie jest nawet dostępne.
Gunnar Bernstein