Firefox aynı kaynak politikasını devre dışı bırakın


110

Firefox'un aynı kaynak politikasını kapatmamı gerektiren yerel bir araştırma aracı geliştiriyorum (komut dosyası erişimi açısından, etki alanları arası istekleri gerçekten umursamıyorum).

Daha spesifik olarak, ana etki alanındaki komut dosyalarının, etki alanlarına bakılmaksızın sayfaya gömülü herhangi bir iframe'deki rastgele öğelere erişebilmesini istiyorum.

CORS FF uzantısından bahseden önceki Soru ve Cevapların farkındayım, ancak ihtiyacım olan şey bu değil çünkü yalnızca CORS'a izin veriyor, komut dosyası erişimine izin vermiyor.

Kolayca yapılamazsa, beni FF'yi yeniden derleyebilmem için SOP'yi devre dışı bırakmak için değiştirebileceğim FF src kodunun belirli bir bölümüne işaret eden herhangi bir kavrayıştan da memnun olurum.


4
Geliştiriciler için ilginç bir şey olurdu. Aynı menşe politikası geliştiricilerin değil kullanıcıların güvenliği için tasarlandığından, verilen sitedeki komut dosyalarının kısıtlamaları aşmasına izin verilmesi mümkün kılınmalıdır. Ancak geliştiriciler aynı zamanda insandır, bu nedenle kişisel bilgilerinizi de kaybedebilirsiniz.
Danubian Sailor

1
Şu anda bunun mümkün olmadığına inanıyorum, işte Firefox ile ilgili hata raporu Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky

Sadece iyi bir çözüm etki dayalı eklentisi ile başlıklarını enjekte etmektir: stackoverflow.com/a/44093160/956397 everthing başka güvensiz ve ...
PiTheNumber

Yanıtlar:


82

5 Mart 2015'te yayınlanan en son Firefox'ta ( yapı 36.0.1 ) çalışan herhangi bir HTTP yanıtına CORS üstbilgilerini ekleyen bir Firefox uzantısı var . Test ettim ve hem Windows 7 hem de Mavericks'te çalışıyor. Çalışmasını sağlamak için size adım adım rehberlik edeceğim.

1) Uzantıyı almak

Ya gelen XPI indirebilirsiniz burada (Yazar oluşturur) ya da gelen burada (ayna, güncellenemez) .

Veya dosyaları GitHub'dan indirin. Şimdi de Firefox Marketplace'te: Buradan indirin . Bu durumda, eklenti, kur'a tıkladıktan sonra yüklenir ve 4. adıma atlayabilirsiniz.

Xpi'yi indirdiyseniz 3. adıma atlayabilirsiniz. Zip'i GitHub'dan indirdiyseniz, 2. adıma gidin.

2) xpi'yi inşa etmek

Zip dosyasını çıkartmanız, "cors-everywhere-firefox-addon-master" klasörüne girmeniz, tüm öğeleri seçip sıkıştırmanız gerekir. Ardından, oluşturulan zip dosyasını * .xpi olarak yeniden adlandırın

Not: OS X gui kullanıyorsanız, bazı gizli dosyalar oluşturabilir, bu nedenle komut satırını kullanmanız daha iyi olur.

3) xpi'yi yükleme

Xpi'yi firefox'a sürükleyip bırakabilir veya şuraya gidebilirsiniz: "about: addons", sağ üst köşedeki dişliyi tıklayıp "eklentiyi dosyadan yükle" yi seçip .xpi dosyasını seçin. Şimdi firefox'u yeniden başlatın.

4) Çalışmaya Başlamak

Şimdi, uzantı varsayılan olarak çalışmayacak. Uzantı simgesini uzantı çubuğuna sürüklemeniz gerekir, ancak endişelenmeyin. Resimler var!

  • Firefox Menüsüne tıklayın
  • Özelleştir'e tıklayın

p1

  • CorsE'yi çubuğa sürükleyin
  • Şimdi, simgeye tıklayın, yeşil olduğunda CORS başlıkları herhangi bir HTTP yanıtına eklenecektir.

p2

5) Çalışıp çalışmadığını test etmek

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) Son düşünceler

O Not https http izin verilmez .

Etrafında bir yol olabilir, ancak sorunun kapsamının arkasında budur.


1
Sen devre dışı HTTP / HTTPS ayarlayarak karışık içerik koruma can security.mixed_content.block_active_contentiçin sahte ve security.mixed_content.block_display_contenthiç gerçek . Bazı güvenliği devre dışı bıraktığınızı ve bunun geçici bir çözüm olması gerektiğini unutmayın.
bufh

4
Bu eklentinin yazarı olarak, aslında bu özel soruyu çözeceğine ikna olmadım. Yine de bahsetmek güzel.
spenibus

2
@spenibus - eklentinizi imzalatmalısınız - Yükleyemiyorum :( - support.mozilla.org/en-US/kb/…
Peter Ajtai

3
@PeterAjtai Mozilla, gördüğüm beni kızdırmak için çok uğraşmaya devam ediyor. İncelenmeyi bekliyor: addons.mozilla.org/en-US/firefox/addon/cors-everywhere Umarım otomatik olarak imzalanmalıdır.
spenibus

1
in about: config set xpinstall.signatures.required to false eklentiyi yüklemek için. Benim için çalıştı.
user2345998

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

21
Teşekkürler @Niklas, ancak bunun yalnızca fileuri aynı kaynak politika kontrollerini devre dışı bıraktığını düşünüyorum - muhtemelen yerel web geliştirme testleri için kullanılır. A etki alanındaki bir JavaScript'ten B etki alanına sahip bir iframe'deki DOM düğümlerine erişmeye çalıştığımda hala beni durduruyor
Yuchen Zhou

127
bu hiçbir şey yapmaz
vknyvz

2
Firefox (geliştirici) sürümümde çalıştığını doğruladım: 40. @Niklas bahşiş için teşekkürler.
bufh

11
Bu, özellikle hata ayıklamaya yönelik bir ayardır ve yerel dosyaların diğer yerel dosyalara erişimini kontrol eder (doğru olarak ayarlanmış bir yerel dosya yalnızca aynı klasördeki veya alt klasörlerdeki yerel dosyalara erişebilir, false olarak ayarlanmış bir yerel dosya tüm yerel dosyalara erişebilir) . Kaynak
Jon Egerton

5
Bu mu şey yapmak, benim durumumda bitti sunulan bir belgeden erişim yerel kaynaklara beni tanır file://protokol. Bilgisayar bilimcileri, test etmedikçe "her şey" kelimesine daha fazla ağırlık vermelidir. her şeyi (yapmadığınız), görüşlerinizle daha muhafazakar olmaya çalışın. Aynı şey "yararsız" kelimesinin kullanımı için de geçerli.
amn

12

FF'nin aynı menşe politikasını özellikle nasıl devre dışı bırakacağımı belirtmediğim için eski cevabımın reddedildiğini fark ettim. Burada daha detaylı bir cevap vereceğim:

Uyarı: Bu, FF'nin yeniden derlenmesini gerektirir ve Firefox'un yeni derlenen sürümü etkinleştirilemez SOP'yi tekrar .

Mozilla Firefox'un kaynak koduna bakın, src dizininde nsScriptSecurityManager.cpp bulun. Burada listelenenleri örnek olarak kullanacağım: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

03/02/2016 tarihi itibariyle 568 satırı olan nsScriptSecurityManager :: CheckSameOriginURI işlev uygulamasına gidin.

Bu işlevi her zaman NS_OK döndürmesini sağlayın.

Bu SOP'yi tamamen devre dışı bırakacaktır.

@Giacomo'nun tarayıcı eklentisi cevabı çoğu insan için yararlı olmalı ve bu cevabı kabul ettim, ancak kişisel araştırma ihtiyaçlarım için (TL; burada açıklamayacağım) yeterli değil ve diğer araştırmacıların ne yapması gerektiğini düşünüyorum. Burada SOP'yi tamamen öldürmek için yaptım.


Bugün itibariyle 499. satır, Git aynası: github.com/mozilla/gecko-dev/blob/…
kamranicus


3

İtibariyle Eylül 2016'ya Bu eklenti devre dışı en iyisidir CORS : https://github.com/fredericlb/Force-CORS/releases

Seçenekler panelinde, hangi başlığın enjekte edileceğini ve belirli bir web sitesinin otomatik olarak etkinleştirilmesini yapılandırabilirsiniz.

görüntü açıklamasını buraya girin


1
Gönderen wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: Yayın ve Masaüstü için Firefox Beta sürümleri hiçbir geçersiz kılma ile, imzasız uzantıları yüklenmesine izin vermez. Bu eklentinin imzalı bir sürümünü bulamadım.
FelixM

1
@FelixM İşte nasıl yapılacağı: ghacks.net/2016/08/14/…
Khado Mikhal

@FelixM Firefox Developer Edition, "about: config" bayraklarında "xpinstall.signatures.required" boole seçeneğine sahiptir. Ancak, bu uzantının 0.1.1 sürümü Firefox Developer Edition 58.0 (Quantum) ile uyumlu değildir.
alxndr

2

Cors-her yerde 'çözmek için: (config hakkında' açık olarak)> = false - Firefox 68 kadar benim için eklenti çalışmaları 68 ı ihtiyacı sonra 'privacy.file_unique_origin' ayarlamak için CORS HTTP isteğinde yeni CORS aynı kaynak kural için' tanıttı.


1

Gelen about:configeklenti content.cors.disable(boş dize).


1
Bu test edildi mi? Okuduğuma göre, bu tercih, ayarlandığında tüm CORS isteklerinin başarısız olmasını sağlamak için tasarlandı true, ancak falsedeğerler veya diğer değerler hakkında hiçbir şey söylemiyor . "Firefox'ta, CORS'u devre dışı bırakan tercih, content.cors.disable'dır. Bunu true olarak ayarlamak, CORS'u devre dışı bırakır, bu nedenle, durum bu olduğunda, CORS istekleri her zaman bu hatayla başarısız olur." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja

Firefox 68.7'den itibaren bu ayar mevcut bile değildir.
Gunnar Bernstein
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.