Как отключить защиту межсайтовых сценариев в своем браузере? - PullRequest
2 голосов
/ 19 сентября 2009

Я хочу загрузить страницу из домена внутри iframe на странице другого домена, а затем получить доступ к ее содержимому с помощью JS. Конечно, это будет XSS, поэтому я получаю сообщение об ошибке «Отказано в доступе к свойству HTMLDocument ...». Дело в том, что я хочу сделать это в своем собственном браузере, а не на общедоступном сайте (т. Е. Мне это не нужно, чтобы защитить меня от самого себя), поэтому я с радостью отключил бы такую ​​защиту на некоторое время. Я использую Firefox 3.5 и хотел бы узнать, можно ли это сделать с помощью этого или других браузеров.

Ответы [ 3 ]

3 голосов
/ 05 марта 2011

Обновление ноябрь 2016 Более простой способ отключить политику одного и того же происхождения в Chrome - запустить ее со следующими флагами:

google-chrome --disable-web-security --user-data-dir

Обновление: Помните о том, где вы запрашиваете повышенные привилегии. Первый метод работает, как и ожидалось, главное - запросить повышенные привилегии в той же области, где вы будете его использовать (в той же функции, в глобальной области ...), в другой области он не будет работать.
Я обновил пример с рабочим кодом.

Это есть в документации:
Привилегии предоставляются только в рамках запрашивающей функции. В эту область входят все функции, вызываемые запрашивающей функцией. Когда скрипт покидает запрашивающую функцию, привилегии больше не применяются. http://www.mozilla.org/projects/security/components/signed-scripts.html


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

В соответствии с документацией с сайта mozilla, эти методы должны работать ... Я обнаружил, что это верно для Firefox 2, я тестировал в FF3 и FF4 и, похоже, не работает. Вы должны попробовать это, Maibe il будет работать для вас, я все еще ищу решение

Метод 1.

  1. Редактировать about:config и установить signed.applets.codebase_principal_support на true (это позволит неподписанным сценариям запрашивать повышенные привилегии) ​​

  2. В вашем родительском скрипте запрос повышенных привилегий:

<сценарий <br> тип = "текст / JavaScript">
функция xss ()
{
попробуй {
netscape.security.PrivilegeManager.enablePrivilege ( "UniversalBrowserRead");
} catch (e)
{
оповещение (е); // console.log (e), если у вас есть firebug
}
Оповещение (document.getElementById ( 'кадр') contentWindow.document.); // console.log ()
}


3. Теперь, когда вы загрузите страницу, FF попросит у вас разрешения на использование скрипта: firefox confirm box

Разрешите, и вы должны получить предупреждение с текстом: [object HTMLDocument]

Перед выполнением любой модификации, если я пытаюсь получить доступ к ....contentWindow.document, я получаю эту ошибку:

Error: A script from "http://example.com" was denied UniversalBrowserRead privileges.

После того, как я получил это:

Permission denied for <http://example.com> to get property Window.document from <http://example_1.com>.

Если вам нравится работать в командной строке, вы можете пропустить шаги 1 и 3 и отредактировать файл presf.js (в Linux: /home/$yourUser/.mozilla/firefox/$yourProfile/prefs.js) и добавить 4 строки

user_pref("signed.applets.codebase_principal_support", true);
user_pref("capability.principal.codebase.p0.granted", "UniversalBrowserRead");
user_pref("capability.principal.codebase.p0.id", "http://example.com");
user_pref("capability.principal.codebase.p0.subjectName", "");

Метод 2.

Попробуйте добавить политику, позволяющую сайтам обходить SOP для этого редактирования prefs.js, и добавьте следующие строки:

user_pref("capability.policy.policynames", "example");
user_pref("capability.policy.example.HTMLDocument", "allAccess");
user_pref("capability.policy.example.sites", "http://example.com http://example_1.com");

К сожалению, даже метод 2 не справляется с работой.

Я все еще ищу решение, Если я найду что-то новое, я обновлю ответ.

0 голосов
/ 05 марта 2011

Версия XMLHttpRequest Greasemonkey позволяет запросам пересекать границы политики одного и того же происхождения. Это может сработать, так как это только для вашего собственного локального развития.

Кроме того, ранние версии Greasemonkey непреднамеренно подвергали эту функцию сценариям содержимого, что, конечно, было большой ошибкой безопасности. Можно было бы разработать расширение, которое бы делало то же самое или открывало пользовательскую функцию только в определенных ситуациях.

0 голосов
/ 19 сентября 2009

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

Используйте более старый браузер. При необходимости установите более старую ОС на виртуальную машину, чтобы браузер стал достаточно старым, чтобы не иметь такой защиты.

...