Tắt chính sách gốc của firefox


110

Tôi đang phát triển một công cụ nghiên cứu cục bộ yêu cầu tôi tắt chính sách nguồn gốc tương tự của Firefox (về quyền truy cập tập lệnh, tôi không thực sự quan tâm đến các yêu cầu tên miền chéo).

Cụ thể hơn, tôi muốn các tập lệnh trong miền lưu trữ có thể truy cập các phần tử tùy ý trong bất kỳ iframe nào được nhúng trong trang, bất kể miền của chúng là gì.

Tôi đã biết phần Hỏi & Đáp trước đây đã đề cập đến phần mở rộng CORS FF, nhưng đó không phải là thứ tôi cần, vì nó chỉ cho phép CORS chứ không cho phép truy cập tập lệnh.

Nếu nó không thể được thực hiện dễ dàng, tôi cũng sẽ đánh giá cao bất kỳ thông tin chi tiết nào hướng tôi đến phần cụ thể của mã FF src mà tôi có thể sửa đổi để tắt SOP, để tôi có thể biên dịch lại FF.


4
Đó sẽ là một điều thú vị với các nhà phát triển. Vì cùng một chính sách nguồn gốc được thiết kế để bảo mật cho người dùng chứ không phải nhà phát triển, nên có thể cho phép các tập lệnh từ trang web nhất định vượt qua các hạn chế. Nhưng các nhà phát triển cũng là người, vì vậy bạn cũng có thể mất thông tin cá nhân của mình.
Danubian Sailor

1
Tôi tin rằng không thể thực hiện được ngay bây giờ, đây là báo cáo lỗi liên quan trong Firefox Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky

Chỉ giải pháp tốt nhất là tiêm các tiêu đề bằng cách cắm dựa trên các lĩnh vực: stackoverflow.com/a/44093160/956397 everthing khác là không an toàn ...
PiTheNumber

Câu trả lời:


81

Có một tiện ích mở rộng của Firefox thêm tiêu đề CORS vào bất kỳ phản hồi HTTP nào hoạt động trên Firefox mới nhất (bản dựng 36.0.1 ) được phát hành ngày 5 tháng 3 năm 2015 . Tôi đã thử nghiệm nó và nó hoạt động trên cả Windows 7 và Mavericks. Tôi sẽ hướng dẫn bạn các bước để nó hoạt động.

1) Lấy tiện ích mở rộng

Bạn có thể tải xuống xpi từ đây (bản dựng của tác giả) hoặc từ đây (bản sao, có thể không được cập nhật).

Hoặc tải xuống các tệp từ GitHub. Bây giờ nó cũng có trên Firefox Marketplace: Tải xuống tại đây . Trong trường hợp này, addon được cài đặt sau khi bạn nhấp vào cài đặt và bạn có thể chuyển sang bước 4.

Nếu bạn đã tải xuống xpi, bạn có thể chuyển sang bước 3. Nếu bạn đã tải xuống tệp zip từ GitHub, hãy chuyển sang bước 2.

2) Xây dựng xpi

Bạn cần giải nén zip, vào bên trong thư mục "cors -where-firefox-addon-master", chọn tất cả các mục và nén chúng. Sau đó, đổi tên zip đã tạo thành * .xpi

Lưu ý: Nếu bạn đang sử dụng OS X gui, nó có thể tạo ra một số tệp ẩn, vì vậy tốt hơn bạn nên sử dụng dòng lệnh.

3) Cài đặt xpi

Bạn chỉ cần kéo và thả xpi vào firefox, hoặc vào: "about: addons", nhấp vào bánh răng ở góc trên bên phải và chọn "install add on from file", sau đó chọn tệp .xpi. Bây giờ, khởi động lại firefox.

4) Làm cho nó hoạt động

Bây giờ, tiện ích mở rộng sẽ không hoạt động theo mặc định. Bạn cần phải kéo biểu tượng tiện ích mở rộng vào thanh tiện ích mở rộng, nhưng đừng lo lắng. Có những hình ảnh!

  • Nhấp vào Menu Firefox
  • Nhấp vào Tùy chỉnh

p1

  • Kéo CorsE vào thanh
  • Bây giờ, hãy nhấp vào biểu tượng, khi nó có màu xanh lục, các tiêu đề CORS sẽ được thêm vào bất kỳ phản hồi HTTP nào

p2

5) Kiểm tra xem nó có hoạt động không

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) Cân nhắc cuối cùng

Lưu ý rằng không cho phép chuyển https thành http .

Có thể có một cách xung quanh nó, nhưng nó nằm sau phạm vi của câu hỏi.


1
Bạn có thể vô hiệu hóa HTTP / HTTPS bảo vệ nội dung hỗn hợp bằng cách thiết lập security.mixed_content.block_active_contentđể saisecurity.mixed_content.block_display_contentđể đúng . Hãy nhớ rằng bạn đang tắt một số bảo mật và đây sẽ là giải pháp tạm thời.
bufh

4
Là tác giả của addon này, tôi không thực sự tin rằng nó sẽ giải quyết được câu hỏi cụ thể này. Thật tuyệt khi được đề cập đến.
speechnibus

2
@spenibus - bạn nên đăng ký tiện ích của mình - Tôi không thể cài đặt nó :( - support.mozilla.org/en-US/kb/…
Peter Ajtai 10/09/15

3
@PeterAjtai Mozilla vẫn tiếp tục cố gắng làm phiền tôi, tôi hiểu rồi. Đang chờ xem xét: addons.mozilla.org/en-US/firefox/addon/cors-everywhere Hy vọng sẽ được tự động ký.
speechnibus

1
trong about: config đặt xpinstall.signatures.required thành false để cài đặt addon. Nó đã làm việc cho tôi.
user2345998

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

21
Cảm ơn @Niklas, tuy nhiên, tôi nghĩ điều này chỉ vô hiệu hóa việc kiểm tra chính sách nguồn gốc của fileuri - có thể được sử dụng để kiểm tra nhà phát triển web cục bộ. Nó vẫn dừng lại tôi khi tôi đang cố gắng để truy cập các nút DOM trong một iframe với miền B từ một JavaScript trong phạm vi của A.
Yuchen Zhou

127
điều này không làm bất cứ điều gì
vknyvz

2
Đã xác nhận rằng nó hoạt động trong phiên bản firefox (nhà phát triển) của tôi: 40. Cảm ơn bạn về mẹo @Niklas.
bufh

11
Đây là cài đặt dành riêng cho việc gỡ lỗi và kiểm soát quyền truy cập tệp cục bộ vào các tệp cục bộ khác (được đặt thành true, tệp cục bộ chỉ có thể truy cập các tệp cục bộ trong cùng một thư mục hoặc các thư mục con, đặt thành false một tệp cục bộ có thể truy cập tất cả các tệp cục bộ) . Nguồn
Jon Egerton

4
không làm điều gì đó, trong trường hợp của tôi nó cho phép tôi tiếp cận nguồn lực địa phương từ một tài liệu phục vụ trên file://giao thức. Các nhà khoa học máy tính nên đặt nặng hơn vào từ "bất cứ điều gì" - trừ khi bạn đã thử nghiệm mọi thứ (mà bạn chưa thử nghiệm), hãy cố gắng thận trọng hơn với nhận xét của mình. Tương tự với việc sử dụng từ "vô dụng".
Amn

12

Tôi nhận ra rằng câu trả lời cũ hơn của tôi bị phản đối vì tôi không chỉ định cụ thể cách tắt chính sách nguồn gốc tương tự của FF. Sau đây tôi sẽ đưa ra một câu trả lời chi tiết hơn:

Cảnh báo: Điều này yêu cầu biên dịch lại FF và phiên bản Firefox mới được biên dịch sẽ không thể kích hoạt lại SOP.

Kiểm tra mã nguồn Firefox của Mozilla, tìm nsScriptSecurityManager.cpp trong thư mục src. Tôi sẽ sử dụng cái được liệt kê ở đây làm ví dụ: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Đi tới triển khai chức năng nsScriptSecurityManager :: CheckSameOriginURI, là dòng 568 kể từ ngày 03/02/2016.

Làm cho hàm đó luôn trả về NS_OK.

Điều này sẽ vô hiệu hóa SOP.

Câu trả lời addon trình duyệt của @Giacomo sẽ hữu ích cho hầu hết mọi người và tôi đã chấp nhận câu trả lời đó, tuy nhiên, đối với nhu cầu nghiên cứu cá nhân của tôi (TL; sẽ không giải thích ở đây) thì vẫn chưa đủ và tôi nghĩ các nhà nghiên cứu khác có thể cần phải làm gì Tôi đã làm ở đây để tiêu diệt hoàn toàn SOP.


Dòng 499 kể từ hôm nay, Git mirror: github.com/mozilla/gecko-dev/blob/…
kamranicus


3

Kể từ tháng 9 năm 2016 , addon này là tốt nhất để tắt CORS : https://github.com/fredericlb/Force-CORS/releases

Trong bảng tùy chọn, bạn có thể định cấu hình tiêu đề nào sẽ đưa vào và trang web cụ thể để kích hoạt nó tự động.

nhập mô tả hình ảnh ở đây


1
Từ wiki.mozilla.org/Add-ons/Extension_Signed : Firefox 48: Phiên bản phát hành và Beta của Firefox dành cho Máy tính để bàn sẽ không cho phép cài đặt các tiện ích mở rộng chưa được ký mà không có ghi đè. Tôi không thể tìm thấy phiên bản đã ký của addon này.
FelixM

1
@FelixM Đây là cách thực hiện: ghacks.net/2016/08/14/…
Khado Mikhal

@FelixM Firefox Developer Edition có tùy chọn boolean "xpinstall.signatures.required" trong cờ "about: config". Tuy nhiên, phiên bản 0.1.1 của tiện ích mở rộng này không tương thích với Firefox Developer Edition 58.0 (Quantum).
alxndr

2

Các CORS-ở khắp mọi nơi công trình addon cho tôi cho đến khi Firefox 68, sau 68 Tôi cần phải điều chỉnh 'privacy.file_unique_origin' -> sai (bằng cách mở 'about: config') để giải quyết ' CORS yêu cầu không HTTP ' cho CORS mới cùng một quy tắc xuất xứ đã giới thiệu.


1

Trong about:configthêm content.cors.disable(chuỗi trống).


1
Điều này đã được thử nghiệm? Từ những gì tôi đang đọc, pref này được thiết kế để làm cho tất cả các yêu cầu CORS không thành công khi được đặt thành true, nhưng không nói gì về falsehoặc các giá trị khác. "Trong Firefox, tùy chọn tắt CORS là content.cors.disable. Đặt tùy chọn này thành true sẽ tắt CORS, vì vậy bất cứ khi nào đúng như vậy, yêu cầu CORS sẽ luôn không thành công với lỗi này." developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/…
stealththeninja

Kể từ Firefox 68.7, cài đặt này thậm chí không khả dụng.
Gunnar Bernstein
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.