Framekiller

редактировать

A framekiller (или framebuster или framebreaker ) - это метод, используемый веб-сайтов и веб-приложений, чтобы их веб-страницы не отображались в пределах фрейма. Фрейм - это часть окна веб-браузера, которая может действовать как меньшее окно. Фреймкиллер обычно используется для предотвращения загрузки веб-сайта из набора фреймов без разрешения или в качестве атаки, как в случае с кликджекингом.

Содержание
  • 1 Реализации
    • 1.1 Альтернативные решения
    • 1.2 Оригинальные убийцы фреймов
  • 2 Ограничения Framekiller
  • 3 Anti-framekiller
  • 4 См. Также
  • 5 Ссылки
Реализации

Framekiller реализуются с использованием JavaScript, который проверяет, window - это главное окно. Рекомендуемый подход - заблокировать отображение окна по умолчанию и разблокировать его только после подтверждения, что текущее окно является основным:

Этот подход был предложен в 2010 году Густавом Ридштедтом, Эли Бурштейном, Дэном Боне и Коллином Джексоном в статье, в которой подчеркивались ограничения существующих методов удаления кадров вместе с методами. позволяя обойти их.

Альтернативные решения

Альтернативный выбор - позволить пользователю определять, разрешить ли фреймкиллер работать.

var framekiller = false; window.onbeforeunload = function () {if (framekiller) {return "..."; // любое сообщение, помогающее пользователю принять решение}};

и приведенный ниже код следует добавить после тега кадра:

// "my_frame" должен быть изменен в соответствии с реальным идентификатором кадра на вашей странице document.getElementById ("my_frame"). Onload = function () {framekiller = true; };

Оригинальные средства уничтожения кадров

Исторически первые сценарии уничтожения кадров были такими простыми:

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

Ограничения Framekiller

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

  • Пользовательский агент не поддерживает JavaScript.
  • Пользовательский агент поддерживает JavaScript, но пользователь отключил поддержку.
  • Пользовательский агент JavaScript поддержка некорректна или реализована частично.
Anti-framekiller

iframe в HTML5 имеет атрибут песочницы. Значение атрибута - это набор разрешенных возможностей для содержимого iframe. Если значение пустое или не задано, содержимое iframe не будет выполнять JavaScript и не разрешит навигацию верхнего уровня. Если указать allow-scripts в наборе исключений, разделенных пробелами, в значении iframe разрешит использование JavaScript, но по-прежнему будет запрещать навигацию верхнего уровня, отображая фреймкиллеры в iframe бессильно.

См. Также
  • Clickjacking - обсуждаются более сложные методы предотвращения встраивания во фрейм, такие как заголовок X-Frame-Options
Ссылки
Последняя правка сделана 2021-05-20 13:19:16
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте