<rmcreative>

RSS

Не дать загружать страницу в iframe

15 декабря 2011

Вот таким вот способом можно попортить жизнь тем, кто вздумал грузить вашу страницу в iframe:

if((self.parent && !(self.parent===self)) && (self.parent.frames.length != 0)){
  self.parent.location=document.location;
}

Если верно помню, встречено на Яндексе образца 2009 года.

Комментарии RSS

  1. №5668
    Костег
    Костег 15.12.2011, 2:43:03

    Что за бубуйня? Как это политика безопасности браузеров позволяет дочернему ифрейму с другого домена перегружать родительскую страницу?

  2. №5669
    Shimon
    Shimon 15.12.2011, 3:11:50
  3. №5671
    Anton Shevchuk
    Anton Shevchuk 15.12.2011, 11:34:14

    А лучше отправить правильный ;)

    header('X-Frame-Options: SAMEORIGIN');
  4. №5672
    Anton Shevchuk
    Anton Shevchuk 15.12.2011, 11:43:41

    Отправить правильный заголовок...

  5. №5676
    CTAPbIu_MABP
    CTAPbIu_MABP 15.12.2011, 13:23:31

    Костег прав, этот код из 2009 и к современности отношения не имеет.

  6. №5678
    Sam
    Sam 15.12.2011, 19:55:09
  7. №5679
    CTAPbIu_MABP
    CTAPbIu_MABP 15.12.2011, 20:12:23

    то есть доку я могу выкинуть.... https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

  8. №5680
    Sam
    Sam 15.12.2011, 20:49:37

    CTAPbIu_MABP, определённо можешь :) Я проверил в последнем FF.

  9. №5681
    MT
    MT 15.12.2011, 20:52:10

    На уровне JS (если IE6 и IE7, не поддерживающие X-Frame-Options, с их 5%-й долей ещё имеют значение для конкретного сайта) можно напакостить и иначе:

    document.body.innerHTML = '';
  10. №5682
    CTAPbIu_MABP
    CTAPbIu_MABP 15.12.2011, 20:57:01

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

  11. №5683
    Максим
    Максим 15.12.2011, 22:51:44

    Способ старый, но, верный.

  12. №6395
    Дрен
    Дрен 01.07.2012, 19:19:49

    Спасибо, будем пробовать.

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.