Есть ли в Firefox параметр, позволяющий родительскому документу получить доступ к DOM IFRAME в другом домене? - PullRequest
2 голосов
/ 26 июля 2010

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

Более длинное объяснение:

У меня есть два "киоска" в нашей приемной, которые могут использовать люди. Поскольку мы работаем в режиме киоска (полноэкранный, без Chrome), я создал небольшое веб-приложение, состоящее из меню и IFRAME. Меню позволяет пользователям просматривать утвержденные сайты, а также выполнять такие действия, как печать. Он также бросает вызовы всплывающих окон и вместо этого накладывает их на модальный фрейм вместо того, чтобы предоставлять доступ к браузеру и хрому ОС - нарушая работу "киоска".

Очевидно, это прекрасно работает на всем внутреннем, потому что все в одном домене. Это становится сложнее при просмотре внешних сайтов, потому что защита XSS срабатывает, и вы не можете видеть DOM внутри IFRAME.

Я также пытался использовать веб-прокси-сервер в том же домене (например, PHProxy), который работает нормально, но есть ужасные крайние случаи, когда он не работает - большой пример - CAPTCHA на нашем сайте формы. Так что это в значительной степени не вариант для меня.


В принципе, я думаю, что единственное решение, которое будет работать для меня, - это каким-то образом изменить браузер, используя настройки безопасности или дополнения. Есть идеи?

Большое спасибо, ребята, за ваше время и внимание. Это очень ценится.

- Иэн

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Существует возможность для непривилегированного кода JavaScript (загруженного с веб-страницы) запросить дополнительные привилегии в Firefox.Это старый нестандартный API, который запрашивает у пользователя разрешение и, если он принят, позволяет JavaScript делать то, что обычный JavaScript не может.Одна из этих вещей - обойти ту же Политику происхождения.

Пример кода:

try { 
    // ask user for permission
    netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
  } catch (e) {
    // user refused permission
    alert('Permission "UniversalBrowserRead" was denied.'); 
  }
  //Should now be capable of bypassing same origin policy if user accepted

Так как браузер киоска не перезапускается (я полагаю) очень часто, диалог просто должен быть принятодин раз.Не уверен, что это самое элегантное решение, но может сработать, по крайней мере, на данный момент (API устарел и может исчезнуть).

Вот ссылка для получения более подробной информации: http://www.mozilla.org/projects/security/components/signed-scripts.html#privs-list

ХотяВ поисках точного имени привилегии я нашел эту страницу о политиках безопасности в Firefox.Это было бы намного более хорошим решением.Я никогда не использовал его, поэтому я не могу дать больше информации, но вот ссылка, может быть, хорошее место, чтобы начать искать:

http://www.mozilla.org/projects/security/components/ConfigPolicy.html

Надеюсь, это поможет!

0 голосов
/ 16 ноября 2013

Почему бы не использовать Greasemonkey , это позволит вам запустить скрипт на любой странице.

0 голосов
/ 06 августа 2010

Я нашел дополнение под названием CrossDomain.Аддон еще не обновлялся для более новых версий Firefox.В конце концов, я решил всю эту проблему, написав HTA и используя механизм рендеринга Internet Explorer - что порадовало моего IT-менеджера :)Вот ссылка на CrossDomain в случае, если это поможет кому-то однажды.Спасибо всем за ваши материалы.

https://addons.mozilla.org/en-US/firefox/addon/13004/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...