Вимкніть політику Firefox того самого походження


110

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

Більш конкретно, я хочу, щоб сценарії в хостовому домені мали можливість отримати доступ до довільних елементів у будь-яких iframes, вбудованих у сторінку, незалежно від їх домену.

Мені відомі попередні запитання і відповіді, в яких згадувалося про розширення CORS FF, але це не те, що мені потрібно, оскільки це дозволяє лише CORS, але не доступ до сценарію.

Якщо це зробити неможливо легко, я також вдячний за будь-яку інформацію, яка вказує мені на конкретну частину коду FF src, яку я можу змінити, щоб відключити SOP, щоб я міг перекомпілювати FF.


4
Цікаво було б із розробниками. Оскільки однакова політика походження призначена для безпеки користувачів, а не розробників, слід дозволити сценаріям із зазначеного веб-сайту переходити обмеження. Але розробники - це також люди, тому ви також можете втратити вашу особисту інформацію.
Дунайський матрос

1
Я вважаю, що це неможливо зараз, тут пов’язаний звіт про помилки у Firefox Bugzilla: bugzilla.mozilla.org/show_bug.cgi?id=1039678
rutsky

Тільки хороше рішення вводити заголовки плагіном на основі доменів: stackoverflow.com/a/44093160/956397 Everthing ще небезпечно ...
PiTheNumber

Відповіді:


82

Існує розширення Firefox, яке додає заголовки CORS до будь-якої відповіді HTTP, що працює над останньою Firefox ( збірка 36.0.1 ), випущеною 5 березня 2015 року . Я перевірив його, і він працює як на Windows 7, так і на Mavericks. Я проводжу вас через кроки, щоб його запрацювати.

1) Отримання розширення

Ви можете завантажити xpi звідси (автор будує) або звідси (дзеркало, можливо, не оновлюється).

Або завантажте файли з GitHub. Тепер це також на Firefox Marketplace: Завантажте тут . У цьому випадку аддон встановлюється після натискання кнопки "Установити", і ви можете перейти до кроку 4.

Якщо ви завантажили xpi, можете перейти до кроку 3. Якщо ви завантажили поштовий індекс з GitHub, перейдіть до кроку 2.

2) Побудова xpi

Вам потрібно витягнути блискавку, зайти всередину папки "cors -where-firefox-addon-master", вибрати всі елементи та зафіксувати їх. Потім перейменуйте створений zip як * .xpi

Примітка: Якщо ви використовуєте gui OS X, він може створити деякі приховані файли, тож вам краще буде скористатися командним рядком.

3) Встановлення xpi

Ви можете просто перетягнути xpi на firefox або перейти до: "about: addons", натисніть на гвинтик у верхньому правому куті та виберіть "встановити додавання з файлу", а потім виберіть файл .xpi. Тепер перезапустіть Firefox.

4) Налагодження роботи

Тепер розширення не працюватиме за замовчуванням. Вам потрібно перетягнути значок розширення на панель розширень, але не хвилюйтеся. Є картинки!

  • Клацніть на меню Firefox
  • Клацніть на Налаштувати

р1

  • Перетягніть CorsE до планки
  • Тепер натисніть на значок, коли зелений заголовки CORS будуть додані до будь-якої відповіді HTTP

р2

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
приблизно про: config set xpinstall.signatures.потрібно встановити помилку для встановлення аддона. Це працювало для мене.
користувач2345998

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

21
Спасибі @Niklas, проте, я думаю, що це лише відключає перевірку політики файлів тієї самої походження файлів - можливо, використовується для тестування локальних веб-розробників. Це все ще зупиняє мене, коли я намагаюся отримати доступ до вузлів DOM в іфреймі з доменом B з JavaScript у домені A.
Yuchen Zhou,

127
це нічого не робить
vknyvz

2
Підтверджено, що це працює у моїй версії firefox (для розробників): 40. Дякую за пораду @Niklas.
bufh

11
Це налаштування, призначене спеціально для налагодження, і контролює доступ локальних файлів до інших локальних файлів (встановлено так, що локальний файл може отримати доступ лише до локальних файлів у тій самій папці або підпапках; встановлено помилкове значення, а місцевий файл може отримати доступ до всіх локальних файлів) . Джерело
Джон Егертон

5
Це щось робить , у моєму випадку це дозволяє мені отримати доступ до локальних ресурсів з документа, поданого за file://протоколом. Комп'ютерним науковцям варто надати більше уваги слову "що-небудь" - якщо ви не перевірили все (чого у вас немає), намагайтеся бути більш консервативними зі своїми зауваженнями. Те саме стосується вживання слова "марний".
атп

12

Я зрозумів, що моя старша відповідь є оскарженою, тому що я не вказав, як конкретно відключити ту саму політику щодо джерела FF. Тут я дам більш детальну відповідь:

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

Ознайомтеся з вихідним кодом Mozilla Firefox, знайдіть nsScriptSecurityManager.cpp в каталозі src. Я буду використовувати приклад, наведений тут: http://mxr.mozilla.org/aviarybranch/source/caps/src/nsScriptSecurityManager.cpp

Перейдіть до реалізації функції nsScriptSecurityManager :: CheckSameOriginURI, що знаходиться на рядку 568 від 02.02.2016.

Зробіть так, щоб ця функція завжди повертала NS_OK.

Це назавжди відключить SOP.

Відповідь на додаток до браузера від @Giacomo повинна бути корисною для більшості людей, і я прийняв цю відповідь, однак для моїх особистих потреб у дослідженні (TL; тут не пояснюю) цього недостатньо, і я вважаю, що іншим дослідникам може знадобитися щось робити Я зробив тут, щоб повністю вбити SOP.


Лінія 499 станом на сьогодні, дзеркало Git: github.com/mozilla/gecko-dev/blob/…
kamranicus

9

Я написав надбудову для подолання цієї проблеми у Firefox (Chrome, версія Opera скоро з’явиться). Він працює з останньою версією Firefox, з прекрасним інтерфейсом користувача та підтримкою JS regex: https://addons.mozilla.org/en-US/firefox/addon/cross-domain-cors

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


1
Дякую тобі. Крім того, є також CORS-Everywhere Extension, який схожий.
nachtigall

3

З вересня 2016 року цей додаток найкращий для відключення CORS : https://github.com/fredericlb/Force-CORS/releases

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

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


1
З wiki.mozilla.org/Add-ons/Extension_Signing : Firefox 48: версії та бета-версії Firefox для Desktop не дозволять встановлювати безпідписані розширення, без переопрацювання. Не вдалося знайти підписану версію цього додатка.
FelixM

1
@FelixM Ось як це зробити: ghacks.net/2016/08/14/…
Хадо Михал

@FelixM Firefox Developer Edition має опцію "xpinstall.signatures.required" булева в прапорах "about: config". Однак версія 0.1.1 цього розширення не сумісна з Firefox Developer Edition 58.0 (Quantum).
alxndr

2

Аддон " Корс" скрізь працює для мене, поки Firefox 68, після 68 мені потрібно налаштувати 'privacy.file_unique_origin' -> false (відкрито 'about: config'), щоб вирішити " CORS запит, а не HTTP " для нового правила того ж походження CORS введено.


1

In about:configadd 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 цей параметр навіть недоступний.
Гуннар Бернштейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.