ปิดใช้งานนโยบายต้นทางเดียวกันของ Firefox


110

ฉันกำลังพัฒนาเครื่องมือวิจัยในพื้นที่ซึ่งต้องการให้ฉันปิดนโยบายต้นทางเดียวกันของ Firefox (ในแง่ของการเข้าถึงสคริปต์ฉันไม่สนใจคำขอข้ามโดเมนจริงๆ)

โดยเฉพาะอย่างยิ่งฉันต้องการให้สคริปต์ในโดเมนโฮสต์สามารถเข้าถึงองค์ประกอบที่กำหนดเองใน iframe ใด ๆ ที่ฝังอยู่ในเพจไม่ว่าจะโดเมนใดก็ตาม

ฉันทราบ Q & As ก่อนหน้านี้ซึ่งกล่าวถึงส่วนขยาย CORS FF แต่นั่นไม่ใช่สิ่งที่ฉันต้องการเนื่องจากอนุญาตเฉพาะ CORS แต่ไม่สามารถเข้าถึงสคริปต์ได้

หากไม่สามารถทำได้อย่างง่ายดายฉันจะขอบคุณข้อมูลเชิงลึกที่ชี้ให้ฉันเห็นส่วนเฉพาะของโค้ด FF src ที่ฉันสามารถแก้ไขเพื่อปิดใช้งาน SOP เพื่อที่ฉันจะได้คอมไพล์ FF ใหม่


4
มันจะเป็นสิ่งที่น่าสนใจสำหรับนักพัฒนา ตั้งแต่ต้นทางนโยบายเดียวกันถูกออกแบบมาสำหรับการรักษาความปลอดภัยของผู้ใช้และนักพัฒนาไม่ได้ก็ควรจะทำไปได้ที่จะอนุญาตให้สคริปต์จากที่ได้รับเว็บไซต์ที่จะไปข้ามข้อ จำกัด แต่นักพัฒนาก็เป็นคนเช่นกันดังนั้นคุณอาจสูญเสียข้อมูลส่วนบุคคลของคุณได้เช่นกัน
Danubian Sailor

1
ฉันเชื่อว่ามันเป็นไปไม่ได้ในตอนนี้นี่คือรายงานข้อผิดพลาดที่เกี่ยวข้องใน Firefox Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky

ทางออกที่ดีเพียงอย่างเดียวคือการฉีดส่วนหัวโดยปลั๊กอินตามโดเมน: stackoverflow.com/a/44093160/956397สิ่งอื่นไม่ปลอดภัย ...
PiTheNumber

คำตอบ:


82

มีส่วนขยายของ Firefox ที่เพิ่มส่วนหัวล ธ ที่จะตอบสนอง HTTP ที่ทำงานเกี่ยวกับล่าสุด Firefox (เป็นสร้าง 36.0.1 ) ออก5 มีนาคม 2015 ฉันทดสอบแล้วและใช้งานได้กับทั้ง Windows 7 และ Mavericks ฉันจะแนะนำคุณตลอดขั้นตอนเพื่อให้มันใช้งานได้

1) รับส่วนขยาย

คุณสามารถดาวน์โหลด xpi ได้จากที่นี่ ( บิลด์ผู้สร้าง) หรือจากที่นี่ (มิเรอร์อาจไม่ได้รับการอัปเดต)

หรือดาวน์โหลดไฟล์จาก GitHub ตอนนี้ก็ยังอยู่ใน Firefox Marketplace: ดาวน์โหลดที่นี่ ในกรณีนี้ส่วนเสริมจะถูกติดตั้งหลังจากที่คุณคลิกติดตั้งและคุณสามารถข้ามไปยังขั้นตอนที่ 4 ได้

หากคุณดาวน์โหลด xpi คุณสามารถข้ามไปยังขั้นตอนที่ 3 ได้หากคุณดาวน์โหลด zip จาก GitHub ให้ไปที่ขั้นตอนที่ 2

2) การสร้าง xpi

คุณต้องแตกไฟล์ zip เข้าไปในโฟลเดอร์ "cors -where-firefox-addon-master" เลือกรายการทั้งหมดและบีบอัดไฟล์ จากนั้นเปลี่ยนชื่อไฟล์ zip ที่สร้างขึ้นเป็น * .xpi

หมายเหตุ: หากคุณใช้ OS X gui มันอาจสร้างไฟล์ที่ซ่อนอยู่ดังนั้นคุณควรใช้บรรทัดคำสั่งดีกว่า

3) การติดตั้ง xpi

คุณสามารถลากและวาง xpi ไปที่ firefox หรือไปที่: "about: addons" คลิกที่ฟันเฟืองที่มุมขวาบนแล้วเลือก "ติดตั้งเพิ่มจากไฟล์" จากนั้นเลือกไฟล์. xpi ของคุณ ตอนนี้รีสตาร์ท Firefox

4) ทำให้มันใช้งานได้

ตอนนี้ส่วนขยายจะไม่ทำงานตามค่าเริ่มต้น คุณต้องลากไอคอนส่วนขยายไปที่แถบส่วนขยาย แต่ไม่ต้องกังวล มีภาพ!

  • คลิกที่เมนู Firefox
  • คลิกที่กำหนดเอง

p1

  • ลาก CorsE ไปที่แถบ
  • ตอนนี้คลิกที่ไอคอนเมื่อเป็นสีเขียวส่วนหัว CORS จะถูกเพิ่มในการตอบสนอง HTTP ใด ๆ

p2

5) ทดสอบว่าใช้งานได้หรือไม่

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) การพิจารณาขั้นสุดท้าย

โปรดทราบว่าhttps ที่ http ไม่ได้รับอนุญาต

อาจมีวิธีการรอบ ๆ แต่มันอยู่เบื้องหลังขอบเขตของคำถาม


1
คุณสามารถปิดใช้ HTTP / HTTPS การป้องกันเนื้อหาผสมโดยการตั้งค่าsecurity.mixed_content.block_active_contentการเท็จและsecurity.mixed_content.block_display_contentจะเป็นความจริง โปรดทราบว่าคุณกำลังปิดใช้งานการรักษาความปลอดภัยบางอย่างและนี่ควรเป็นวิธีแก้ปัญหาชั่วคราว
bufh

4
ในฐานะผู้เขียนส่วนเสริมนี้ฉันไม่เชื่อว่าจะช่วยแก้ปัญหานี้ได้ เป็นเรื่องดีที่ได้รับการกล่าวถึง
spenibus

2
@spenibus - คุณควรได้รับส่วนเสริมของคุณเมื่อลงชื่อ - ฉันไม่สามารถติดตั้งได้ :( - support.mozilla.org/en-US/kb/…
Peter Ajtai

3
@PeterAjtai Mozilla พยายามอย่างหนักที่จะทำให้ฉันรำคาญฉันเห็น รอการตรวจสอบ: addons.mozilla.org/en-US/firefox/addon/cors-everywhereหวังว่าจะได้รับการลงชื่ออัตโนมัติ
spenibus

1
ใน about: config set xpinstall.signatures.required to falseเพื่อติดตั้ง addon มันได้ผลสำหรับฉัน
user2345998

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

21
อย่างไรก็ตามขอบคุณ @Niklas ฉันคิดว่านี่เป็นการปิดใช้งานการตรวจสอบนโยบายต้นทางเดียวกันของ fileuri เท่านั้น - อาจใช้สำหรับการทดสอบนักพัฒนาเว็บในพื้นที่ มันยังคงหยุดฉันเมื่อฉันพยายามเข้าถึงโหนด DOM ใน iframe ที่มีโดเมน B จาก JavaScript ในโดเมน A
Yuchen Zhou

127
ไม่ได้ทำอะไรเลย
vknyvz

2
ยืนยันว่าใช้งานได้ในเวอร์ชัน Firefox (ผู้พัฒนา) ของฉัน: 40 ขอบคุณสำหรับเคล็ดลับ @Niklas
bufh

11
นี่เป็นการตั้งค่าเฉพาะสำหรับการดีบักและควบคุมไฟล์ในเครื่องที่เข้าถึงไฟล์ในเครื่องอื่น ๆ (ตั้งค่าเป็น true ไฟล์ในเครื่องจะสามารถเข้าถึงไฟล์ในเครื่องในโฟลเดอร์เดียวกันหรือโฟลเดอร์ย่อยเดียวกันเท่านั้นตั้งค่าเป็นเท็จไฟล์ในเครื่องสามารถเข้าถึงไฟล์ในเครื่องทั้งหมดได้) . ที่มา
Jon Egerton

5
มันไม่ทำอะไรบางอย่างในกรณีของฉันมันช่วยให้ฉันเพื่อทรัพยากรในท้องถิ่นเข้าถึงได้จากเอกสารที่ทำหน้าที่มากกว่าfile://โปรโตคอล นักวิทยาศาสตร์คอมพิวเตอร์ควรให้น้ำหนักกับคำว่า "อะไรก็ได้" มากขึ้น - เว้นแต่คุณจะได้ทดสอบทุกอย่าง (ที่คุณยังไม่เคยทำ) ลองใช้คำพูดของคุณแบบอนุรักษ์นิยมมากขึ้น เช่นเดียวกันกับการใช้คำว่า "ไร้ประโยชน์"
AMN

12

ฉันรู้ว่าคำตอบที่เก่ากว่าของฉันถูกลงคะแนนเนื่องจากฉันไม่ได้ระบุวิธีปิดใช้งานนโยบายต้นทางเดียวกันของ FF โดยเฉพาะ ฉันจะให้คำตอบโดยละเอียดเพิ่มเติมที่นี่:

คำเตือน: ต้องมีการคอมไพล์ FF ใหม่และ Firefox เวอร์ชันที่คอมไพล์ใหม่จะไม่สามารถเปิดใช้งาน SOP ได้อีก

ตรวจสอบซอร์สโค้ดของ Firefox ของ Mozilla ค้นหา nsScriptSecurityManager.cpp ในไดเรกทอรี src ฉันจะใช้รายการที่ระบุไว้ที่นี่เป็นตัวอย่าง: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

ไปที่การใช้งานฟังก์ชัน nsScriptSecurityManager :: CheckSameOriginURI ซึ่งเป็นบรรทัดที่ 568 ณ วันที่ 03/02/2016

ทำให้ฟังก์ชันนั้นส่งคืน NS_OK เสมอ

สิ่งนี้จะปิดการใช้งาน SOP ให้ดี

คำตอบส่วนเสริมของเบราว์เซอร์โดย @Giacomo น่าจะเป็นประโยชน์สำหรับคนส่วนใหญ่และฉันได้ยอมรับคำตอบนั้นแล้วอย่างไรก็ตามสำหรับความต้องการในการวิจัยส่วนบุคคลของฉัน (TL จะไม่อธิบายที่นี่) มันไม่เพียงพอและฉันคิดว่านักวิจัยคนอื่นอาจต้องทำในสิ่งที่ ฉันมาที่นี่เพื่อฆ่า SOP อย่างเต็มที่


บรรทัด 499 ณ วันนี้ Git mirror: github.com/mozilla/gecko-dev/blob/…
kamranicus

9

ฉันเขียนส่วนเสริมเพื่อแก้ไขปัญหานี้ใน Firefox (Chrome เวอร์ชัน Opera จะมีเร็ว ๆ นี้) ใช้งานได้กับ Firefox เวอร์ชันล่าสุดพร้อม UI ที่สวยงามและรองรับ JS regex: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors

ใส่คำอธิบายภาพที่นี่


1
ขอบคุณ. นอกจากนี้ยังมีส่วนขยาย CORS-Everywhereซึ่งคล้ายกัน
nachtigall

3

เดือนกันยายน 2559 ส่วนเสริมนี้ดีที่สุดในการปิดใช้งานCORS : https://github.com/fredericlb/Force-CORS/releases

ในแผงตัวเลือกคุณสามารถกำหนดค่าส่วนหัวที่จะฉีดและเว็บไซต์เฉพาะเพื่อเปิดใช้งานโดยอัตโนมัติ

ใส่คำอธิบายภาพที่นี่


1
จากwiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: Firefox สำหรับเดสก์ท็อปเวอร์ชันรีลีสและเบต้าจะไม่อนุญาตให้ติดตั้งส่วนขยายที่ไม่ได้ลงชื่อโดยไม่มีการแทนที่ ฉันไม่พบเวอร์ชันที่ลงนามของส่วนเสริมนี้
FelixM

1
@FelixM นี่คือวิธีทำ: ghacks.net/2016/08/14/…
Khado Mikhal

@FelixM Firefox Developer Edition มีตัวเลือกบูลีน "xpinstall.signatures.required" ในแฟล็ก "about: config" อย่างไรก็ตามเวอร์ชัน 0.1.1 ของส่วนขยายนี้ไม่สามารถทำงานร่วมกับ Firefox Developer Edition 58.0 (Quantum)
alxndr

2

ส่วนเสริมcors-ทุกที่ใช้งานได้สำหรับฉันจนถึง Firefox 68 หลังจาก 68 ฉันต้องปรับ 'privacy.file_unique_origin' -> เท็จ (โดยเปิด 'about: config') เพื่อแก้ ' คำขอ CORS ไม่ใช่ HTTP ' สำหรับกฎต้นกำเนิดเดียวกันของ CORS ใหม่ แนะนำ


1

ในabout:configการเพิ่มcontent.cors.disable(สตริงว่าง)


1
ได้รับการทดสอบแล้วหรือยัง? จากสิ่งที่ฉันกำลังอ่านคำนำหน้านี้ได้รับการออกแบบมาเพื่อให้คำขอ CORS ทั้งหมดล้มเหลวเมื่อตั้งค่าเป็นtrueแต่ไม่บอกว่าไม่มีอะไรเกี่ยวกับfalseหรือค่าอื่น ๆ "ใน Firefox ค่ากำหนดที่ปิดใช้งาน CORS คือ content.cors.disable การตั้งค่านี้เป็น true จะปิดใช้งาน CORS ดังนั้นเมื่อใดก็ตามที่เป็นเช่นนั้นคำขอ CORS จะล้มเหลวด้วยข้อผิดพลาดนี้เสมอ" developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja

ใน Firefox 68.7 ยังไม่มีการตั้งค่านี้
Gunnar Bernstein
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.