Подтвердить что ты не робот

Обход изолированной песочницы iframe?

Кто-то iframing мой сайт, используя

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

Таким образом, атрибут sandbox запрещает моему сайту использовать блокиратор iframe. И это может быть легко iframed.

Рамщик на моем веб-сайте:

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

(Если это только один сайт, являющийся проблемой, то блокировка их с помощью htaccess, вероятно, будет лучшим подходом)

Ответ 3

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

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

Ответ 4

@SudiptaKumarMaiti ответ X-Frame-Options работает, но заменяется уровнем безопасности контента (CSP) Уровень 2 - в частности frame-ancestors directive.

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

Content-Security-Policy: frame-ancestors 'none';