Как запретить фрейму управлять location

Возникла задача открыть окно с результатом поиска по Яндексу во фрейме. Но я обнаружил, что Яндекс при открытии его результатов во фрейме заставляет заставляет страницу перейти по адресу фрейма. Делает это следующий код:

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

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

Вот рабочий пример:

<iframe sandbox src='http://yandex.ru/yandsearch?text=Чехов А.П.' width='100%' height='200' ></iframe>

Правда есть один нюанс. Дело в том, что этот параметр введен только с HTML5, что означает что работать это будет только в современных браузерах.

Follow buzzich on Twitter

Комментарии

Оставить комментарий

CTRL+Enter

Buzz22.09.2015 17:16
Яндекс прикрыл эту лавочку. Они решили, что раз не могут изменить адрес родительской страницы, то не будут показывать вообще ничего.

burn30.05.2013 19:41
приветствую. как часто в скайпе онлайн бываете?...
с уважением. burn