Блокировать iframe от установки parent.location (предотвратить сброс фреймов) - PullRequest
4 голосов
/ 19 сентября 2010

У меня есть веб-сайт в моем собственном домене, куда я включаю фреймы для других сайтов в других доменах для быстрого предварительного просмотра.

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

Как я могу это остановить. Даже не показывать iframe было бы лучше, чем перенаправление в случае фреймбастера.

Разве это перенаправление не должно быть заблокировано той же защитой происхождения сайта?


Обновление

Хорошо, кажется, это невозможно предотвратить, но можно вместо этого просто не отображать кадр.

Я попытался с двойным подходом кадра: A и B на моем сайте, B содержит C, и когда B получает window.onbeforeunload, он посылает сообщение A, чтобы удалить B. Это также не сработало, так как кадры, кажется иметь доступ ко всему верхнему окну, а не только к родительскому.

window.onbeforeunload работает для блокировки перенаправления между прочим, но затем вы должны отобразить диалоговое окно.

Ответы [ 5 ]

6 голосов
/ 19 сентября 2010

Этого нельзя сделать, потому что вы не можете получить доступ к DOM страницы в iframe, если он нарушает политику того же происхождения.

Просто не делайте этого.Если у людей есть код с фреймом, они явно не хотят, чтобы их страница была в фрейме.Уважай это.

1 голос
/ 19 сентября 2010

Как насчет запуска теста во всплывающем окне?Дайте ему 20 секунд, если у вас все еще есть контроль над всплывающим окном (т. Е. Кадр не изменил document.url), затем загрузите его в новый кадр (?) И отобразите для пользователя.В противном случае, не показывать кадр вообще.Это не надежно, но может работать.

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

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

http://www.thumbshots.com/

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

Это игра в кошки-мышки, но разгром можно победить * 1002.

По мнению исследователей (PDF) из Стэнфордского университета и Университета Карнеги-Меллона, уничтожение кадровне так эффективен для предотвращения кликджекинга, как хотелось бы.Анализ 500 лучших веб-сайтов, ранжированных Alexa, обнаружил, что все реализации удаления фреймов можно обойти.Исследователи обнаружили, что некоторые из этих обходных путей были специфичны для браузера, в то время как другие работали во всех браузерах.* Стэнфорд (PDF)

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

Как я могу это остановить.

Ты не можешь. Если бы вы могли, это потерпело бы поражение от того, чтобы иметь в первую очередь код, удаляющий фреймы.

Разве это перенаправление не должно быть заблокировано той же защитой происхождения сайта?

Это защищает только от доступа / изменения DOM (т.е. document объект) страницы. Код очистки кадра использует только объект window для обнаружения кадров и перенаправления на другую страницу.

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