Отключить политику одинакового происхождения Firefox.

Я разрабатываю локальный исследовательский инструмент, который требует, чтобы я отключил одну и ту же политику происхождения Firefox (с точки зрения доступа script, мне действительно не нужны запросы на междоменные запросы).

В частности, я хочу, чтобы сценарии в домене хоста имели доступ к произвольным элементам в любых iframe, встроенных в страницу, независимо от их домена.

Я знаю предыдущий Q & Как уже упоминалось, расширение CORS FF, но это не то, что мне нужно, поскольку оно разрешает доступ только CORS, но не script.

Если это нелегко сделать, я также буду признателен за любые идеи, которые указывают мне на определенную часть кода FF src, которую я могу изменить, чтобы отключить SOP, чтобы я мог перекомпилировать FF.

Ответ 1

Существует расширение Firefox, которое добавляет заголовки CORS к любому 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-везде-firefox-addon-master", выбрать все элементы и сжать их. Затем переименуйте созданный почтовый индекс в *.xpi

Примечание. Если вы используете графический интерфейс OS X, он может создавать скрытые файлы, поэтому вам лучше использовать командную строку.

3) Установка xpi

Вы можете просто перетащить xpi в firefox или перейти к: "about: addons", нажмите на шестеренку в верхнем правом углу и выберите "install add on from file", затем выберите файл .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 не допускается.

Там может быть способ обойти это, но это за рамками вопроса.

Ответ 2

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

Ответ 3

Я понял, что мой более старый ответ ниспровергнут, потому что я не указал, как конкретно отключить FF-политику происхождения. Здесь я дам более подробный ответ:

Предупреждение: для этого требуется повторная компиляция FF, и вновь скомпилированная версия Firefox не сможет снова включить SOP.

Ознакомьтесь с исходным кодом Mozilla Firefox, найдите 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.

Ответ 4

Я написал дополнение для преодоления этой проблемы в Firefox (Chrome, версия Opera появится в ближайшее время). Он работает с последней версией Firefox, с красивым пользовательским интерфейсом и поддержкой регулярных выражений JS: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors

enter image description here

Ответ 5

По состоянию на сентябрь 2016 г. этот аддон лучше всего отключить CORS: https://github.com/fredericlb/Force-CORS/releases

На панели параметров вы можете настроить заголовок для ввода и конкретный веб-сайт, чтобы он автоматически включался.

введите описание изображения здесь

Ответ 6

У меня работает аддон cors-везде до Firefox 68, после 68 мне нужно настроить 'privacy.file_unique_origin' → false (путем открытия 'about: config'), чтобы решить 'CORS-запрос, а не HTTP' для нового введенного правила CORS того же происхождения.