2012-03-30 2 views
2

Пусть http://a.com/foo содержит <iframe src="http://b.com/bar">предотвратить IFRAME от изменения родительского расположения

Иногда b.com/bar сломается из рамы: окно верхнего уровня будет перенаправлять от a.com/foo в b.com/bar , Я не знаю, как это делает b.com.

Я думал, что междоменное iframe не может вмешиваться в родительский процесс, если родитель не взаимодействует через postMessage. Изменилось ли исключение этого окна?

Если это то, что происходит, как можно предотвратить аферу a.com? Я управляю a.com, но не могу изменить b.com.

Если это не так, как я могу узнать, что делает b.com для достижения перенаправления?

Было бы приемлемым заставить b.com загружать себя в новое окно или саботировать его доступ к объектам top или parent. Другие ухудшения поведения b.com могут быть приемлемыми.

+0

[Возможно, этот классический вопрос может быть интересным] (http://stackoverflow.com/questions/958997) – Pointy

+0

Интересно, хотя основной трюк с ракурсом-расторжением 204 не работает в моем FF11 (все навигационные проводы блокируются). – spraff

+0

Страница в конечном счете победит; даже если он не может переборщить ваш фрейм-бэттер, он может решить спрятать себя или перенаправить на что-то неприемлемое. – Pointy

ответ

0

Что может происходить, это ссылка внутри b.com имеет атрибут Target = '_ parent'. Это приведет к обновлению родительского окна/iframe.

Если вы контролируете b.com - убедитесь, что все ваши цели - это сами.

0

Это называется «разорвать рамку». Предположительно, есть способы остановить это (http://seclab.stanford.edu/websec/framebusting/index.php).

Возможно, вместо iframe вы можете использовать ajax или аналогично для загрузки содержимого фрейма на свою страницу?

0

Решение ajax может работать, если я создаю a.com/proxy.php, который будет использовать cURL для извлечения b.com.

Плюсы:

  • может изменить или удалить любой сценарий
  • может настроить содержание B.Com (режим предварительного просмотра)
  • может обойти ограничения Iframe междоменное

Минусы:

  • куки/сеансы на b.com won ' т доступны
  • b.com может потребоваться скрипты для создания его содержания
  • бремя полосы пропускания
  • кодирования усилия, чтобы сделать hrefs работать
Смежные вопросы