Nonaktifkan kebijakan firefox same origin

110

Saya mengembangkan alat penelitian lokal yang mengharuskan saya menonaktifkan kebijakan asal Firefox yang sama (dalam hal akses skrip, saya tidak terlalu peduli dengan permintaan lintas domain).

Lebih khusus lagi, saya ingin skrip di domain host dapat mengakses elemen arbitrer di semua iframe yang disematkan di halaman, apa pun domainnya.

Saya mengetahui Tanya Jawab sebelumnya yang menyebutkan ekstensi CORS FF, tetapi bukan itu yang saya butuhkan, karena hanya mengizinkan CORS, tetapi bukan akses skrip.

Jika tidak dapat dilakukan dengan mudah, saya juga akan menghargai setiap wawasan yang mengarahkan saya ke bagian tertentu dari kode src FF yang dapat saya modifikasi untuk menonaktifkan SOP, sehingga saya dapat mengkompilasi ulang FF.

Yuchen Zhou
sumber
4
Ini akan menjadi hal yang menarik dengan para pengembang. Karena kebijakan asal yang sama dirancang untuk keamanan pengguna dan bukan pengembang, harus dimungkinkan untuk mengizinkan skrip dari situs yang diberikan melewati batasan. Tapi pengembang juga manusia, jadi Anda bisa kehilangan informasi pribadi Anda juga.
Danubian Sailor
1
Saya yakin itu tidak mungkin untuk saat ini, berikut adalah laporan bug terkait di Firefox Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky
Satu-satunya solusi yang baik adalah memasukkan header dengan plugin berdasarkan domain: stackoverflow.com/a/44093160/956397 Semua yang lain tidak aman ...
PiTheNumber

Jawaban:

82

Ada ekstensi Firefox yang menambahkan tajuk CORS ke respons HTTP apa pun yang berfungsi di Firefox terbaru ( build 36.0.1 ) yang dirilis 5 Maret 2015 . Saya mengujinya dan berfungsi pada Windows 7 dan Mavericks. Saya akan memandu Anda melalui langkah-langkah untuk membuatnya berfungsi.

1) Mendapatkan ekstensi

Anda dapat mengunduh xpi dari sini (penulis build) atau dari sini (mirror, mungkin tidak diperbarui).

Atau unduh file dari GitHub. Sekarang juga ada di Firefox Marketplace: Unduh di sini . Dalam kasus ini, addon diinstal setelah Anda mengklik instal dan Anda dapat langsung ke langkah 4.

Jika Anda mengunduh xpi, Anda dapat melompat ke langkah 3. Jika Anda mengunduh zip dari GitHub, lanjutkan ke langkah 2.

2) Membangun xpi

Anda perlu mengekstrak zip, masuk ke dalam folder "cors-everywhere-firefox-addon-master", pilih semua item dan masukkan dalam zip. Kemudian, ganti nama zip yang dibuat menjadi * .xpi

Catatan: Jika Anda menggunakan OS X gui, ini mungkin membuat beberapa file tersembunyi, jadi Anda akan lebih baik menggunakan baris perintah.

3) Menginstal xpi

Anda tinggal drag and drop xpi ke firefox, atau pergi ke: "about: addons", klik pada roda gigi di sudut kanan atas dan pilih "install add on from file", lalu pilih file .xpi Anda. Sekarang, mulai ulang firefox.

4) Membuatnya berhasil

Sekarang, ekstensi tidak akan berfungsi secara default. Anda perlu menyeret ikon ekstensi ke bilah ekstensi, tetapi jangan khawatir. Ada fotonya!

  • Klik pada Menu Firefox
  • Klik Kustomisasi

p1

  • Seret Korsel ke bar
  • Sekarang, klik ikon tersebut, ketika berwarna hijau, header CORS akan ditambahkan ke respons HTTP apa pun

p2

5) Menguji apakah itu berfungsi

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) Pertimbangan akhir

Perhatikan bahwa https ke http tidak diperbolehkan .

Mungkin ada jalan keluarnya, tapi itu di balik cakupan pertanyaannya.

Giacomo Tecya Pigani
sumber
1
Anda dapat menonaktifkan perlindungan konten campuran HTTP / HTTPS dengan menyetel security.mixed_content.block_active_contentke false dan security.mixed_content.block_display_contentke true . Ingatlah Anda menonaktifkan beberapa keamanan dan ini seharusnya menjadi solusi sementara.
bufh
4
Sebagai penulis addon ini, saya tidak benar-benar yakin itu akan menyelesaikan pertanyaan khusus ini. Sangat menyenangkan untuk disebutkan.
spenibus
2
@spenibus - Anda harus menandatangani add on - Saya tidak dapat menginstalnya :( - support.mozilla.org/en-US/kb/…
Peter Ajtai
3
@PeterAjtai Mozilla terus berusaha keras untuk mengganggu saya, saya mengerti. Menunggu tinjauan: addons.mozilla.org/en-US/firefox/addon/cors-everywhere Semoga bisa ditandatangani secara otomatis.
spenibus
1
di about: config set xpinstall.signatures.required ke false untuk menginstal addon. Itu berhasil untuk saya.
pengguna2345998
43
about:config -> security.fileuri.strict_origin_policy -> false
Niklas
sumber
21
Terima kasih @Niklas, namun, menurut saya ini hanya menonaktifkan pemeriksaan kebijakan asal fileuri yang sama - mungkin digunakan untuk pengujian developer web lokal. Itu masih menghentikan saya ketika saya mencoba mengakses simpul DOM di iframe dengan domain B dari JavaScript di domain A.
Yuchen Zhou
127
ini tidak melakukan apa
vknyvz
2
Dikonfirmasi berfungsi di firefox (developer) versi: 40. Terima kasih atas tipnya @Niklas.
bufh
11
Ini adalah pengaturan khusus untuk debugging, dan mengontrol akses file lokal ke file lokal lainnya (diatur ke true file lokal hanya dapat mengakses file lokal di folder atau sub folder yang sama, set ke false file lokal dapat mengakses semua file lokal) . Sumber
Jon Egerton
5
Ini tidak melakukan sesuatu, dalam kasus saya memungkinkan saya untuk mengakses sumber daya lokal dari dokumen yang disajikan di atas file://protokol. Ilmuwan komputer harus lebih menekankan pada kata "apa saja" - kecuali Anda telah menguji segalanya (yang belum pernah Anda uji ), cobalah untuk lebih konservatif dengan komentar Anda. Hal yang sama berlaku untuk penggunaan kata "tidak berguna".
amn
12

Saya menyadari jawaban saya yang lebih lama diturunkan karena saya tidak menentukan cara menonaktifkan kebijakan asal yang sama dari FF secara khusus. Disini saya akan memberikan jawaban yang lebih detail:

Peringatan: Ini memerlukan kompilasi ulang FF, dan versi Firefox yang baru dikompilasi tidak akan dapat mengaktifkan SOP lagi.

Lihat kode sumber Mozilla Firefox, temukan nsScriptSecurityManager.cpp di direktori src. Saya akan menggunakan yang tercantum di sini sebagai contoh: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Masuk ke implementasi fungsi nsScriptSecurityManager :: CheckSameOriginURI, yang merupakan baris 568 per tanggal 03/02/2016.

Jadikan fungsi itu selalu mengembalikan NS_OK.

Ini akan menonaktifkan SOP untuk selamanya.

Jawaban addon browser oleh @Giacomo seharusnya bermanfaat bagi kebanyakan orang dan saya telah menerima jawaban itu, namun, untuk kebutuhan penelitian pribadi saya (TL; tidak akan dijelaskan di sini) itu tidak cukup dan saya pikir peneliti lain mungkin perlu melakukan apa Saya lakukan di sini untuk sepenuhnya membunuh SOP.

Yuchen Zhou
sumber
Baris 499 pada hari ini, cermin Git: github.com/mozilla/gecko-dev/blob/…
kamranicus
3

Mulai September 2016 , addon ini adalah yang terbaik untuk menonaktifkan CORS : https://github.com/fredericlb/Force-CORS/releases

Di panel opsi Anda dapat mengonfigurasi tajuk mana yang akan dimasukkan dan situs web tertentu untuk mengaktifkannya secara otomatis.

masukkan deskripsi gambar di sini

Khado Mikhal
sumber
1
Dari wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: Firefox versi Rilis dan Beta untuk Desktop tidak mengizinkan penginstalan ekstensi yang tidak bertanda tangan, tanpa menimpa. Saya tidak dapat menemukan versi yang ditandatangani dari addon ini.
FelixM
1
@FelixM Berikut cara melakukannya: ghacks.net/2016/08/14/…
Khado Mikhal
@FelixM Edisi Pengembang Firefox memiliki opsi "xpinstall.signatures.required" boolean dalam panji "about: config". Namun, versi 0.1.1 ekstensi ini tidak kompatibel dengan Firefox Developer Edition 58.0 (Quantum).
alxndr
2

The kor-mana karya addon untuk saya sampai Firefox 68, setelah 68 saya perlu menyesuaikan 'privacy.file_unique_origin' -> palsu (by terbuka 'about: config') untuk memecahkan ' CORS meminta tidak HTTP ' untuk CORS baru aturan yang sama-asal diperkenalkan.

ob.yann
sumber
1

Di about:configtambahkan content.cors.disable(string kosong).

ghst
sumber
1
Apakah ini sudah diuji? Dari apa yang saya baca, pref ini dirancang untuk membuat semua permintaan CORS gagal saat disetel ke true, tetapi tidak mengatakan apa-apa tentang falseatau nilai lainnya. "Di Firefox, preferensi untuk menonaktifkan CORS adalah content.cors.disable. Menyetel ini ke true akan menonaktifkan CORS, jadi jika demikian, permintaan CORS akan selalu gagal dengan kesalahan ini." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja
Mulai Firefox 68.7, pengaturan ini bahkan tidak tersedia.
Gunnar Bernstein