2015-10-30 4 views
25

Кто iframing моего сайта, используяОбход изолированной песочницы iframe?

<iframe src="http://example.org" sandbox=""></iframe> 

Таким образом, атрибут песочницы предотвращает мой сайт, чтобы использовать IFrame блокатор на нем. И это может быть легко iframed.

кадров попойка на моем сайте:

if (window.top !== window.self) window.top.location.replace(window.self.location.href); 

Есть ли программный способ перенаправить на мой сайт, когда его время фреймов при использовании атрибута песочницы?

+0

Помимо другие варианты, вы можете рассмотреть [ 'X-Frame-Options' HTTP заголовок ответа] (HTTPS: //developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options). – Palpatim

+0

Дополнительная информация о iframe и framekillers [Wiki] (https://en.wikipedia.org/wiki/Framekiller), [iFrame Attribute - html5 & Security] (https://www.tinfoilsecurity.com/blog/protect -your-website-from-embedded-content-iframe-security) – yjs

ответ

16

Iframing могут быть защищены с помощью заголовка X-Frame-Options ответа, установите либо X-Frame-Optionsvalue="DENY" или X-Frame-Optionsvalue="SAMEORIGIN". Благодаря этим настройкам заголовка ответа вы можете защитить свой сайт от атаки IFraming или clickjack.

Как только X-Frame-Options настроен заголовок ответа, браузер получает стандартное сообщение типа «Этот контент не может отображаться в кадре».

+0

С этим, он не будет показывать мою страницу правильно? Но когда я выделил текст, я хочу, чтобы он перенаправлялся на мою страницу. – user198989

+0

Браузер не получает никакого правильного html или скрипта после того, как заголовок ответа X-Frame-Options установлен либо на «deny», либо на «sameorigin», поэтому перенаправление невозможно через скрипт. –

10

Атрибут sandbox отключает все javascript, среди прочего. Вот почему ваш фрейм-брейкер не будет работать, ни другие пользователи javascript не предоставили.

W3 говорят о песочнице:

  • скрипты запрещены/отключены в IFRAME
  • ссылки на другие контексты просмотра запрещены/отключены в IFRAME

тест показывает, что атрибут также отключает мета перенаправления и любую стандартную ссылку, которая выходит из iframe.

С этой строгостью я был бы очень удивлен, если возможно перенаправление, поскольку это победит точку песочницы.

Лучшее, что я могу предложить, это использовать тег noscript для отображения сообщения пользователям, просматривающим страницу в изолированном iframe. Вы можете создать стиль, чтобы люди не могли видеть ваш контент.

(если это только один сайт является проблемой, то блокируя их с Htaccess, вероятно, будет более эффективным подходом)

+0

Другой человек, используемый с песочницей = "allow-scripts", так сказать, что мы можем запускать javascript. Какой может быть лучший подход к перенаправлению на основной сайт iframed? – user198989

+0

Для этого им потребуется разрешить навигацию. Разрешить-скрипты также не позволяют оставить iframe. –

+0

Если бы это было добавлено, каким может быть подход для перенаправления? – user198989

2

Я думаю, что лучшее, что вы можете сделать, это показать свое сообщение с target="top" ссылку. Вся концепция атрибута sandbox заключается в запрете перенаправления. Нельзя обойти это, и если вы когда-нибудь найдете одного из разработчиков браузеров, вероятно, найдет способ его остановить. Это явно их намерение.

Это как раз то, как работает сеть. Вы не можете делать все, что захотите, когда дело доходит до браузеров.

0

@ ответ SudiptaKumarMaiti о X-Frame-Options работ, но сейчас вытесняется Content Security Policy (CSP) 2-го уровня - в частности frame-ancestorsdirective.

Чтобы запретить обрамление полностью (по аналогии с X-Frame-Options: DENY), используйте этот HTTP заголовок:

Content-Security-Policy: frame-ancestors 'none'; 
Смежные вопросы