Jump to content

Фреймкиллер

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

Скрипты Framekiller в значительной степени были заменены использованием X-Frame-Options и Content-Security-Policy headers , которые в первую очередь предотвращают загрузку страницы во фрейме. Эти заголовки поддерживаются всеми современными браузерами и не требуют использования JavaScript . [1] Эти заголовки также предназначены для указания внутри программного обеспечения веб-сервера , а не непосредственно внутри HTML.

Реализации

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

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

<style>html{display:none;}</style>
<script>
   if (self == top) {
       document.documentElement.style.display = 'block'; 
   } else {
       top.location = self.location; 
   }
</script>

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

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

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

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

var framekiller = false;
window.onbeforeunload = function() { 
  if (framekiller) {
    return "...";  // any message that helps user to make decision
  }
};

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

//"my_frame" should be changed according to the real id of the frame in your page 
document.getElementById("my_frame").onload = function() { 
  framekiller = true;
};

Оригинальные фреймкиллеры

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

Исторически сложилось так, что первые скрипты фреймкиллеров были такими простыми:

<script type="text/javascript">
  if (top != self) top.location.replace(location);
</script>

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

Ограничения фреймкиллера

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

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

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

Антифреймкиллер

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

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

См. также

[ редактировать ]
  • Clickjacking — обсуждаются более сложные методы предотвращения встраивания в фрейм, такие как заголовок X-Frame-Options.
  1. ^ «CSP: рамки-предки» . Проверено 27 сентября 2023 г.
  2. ^ Перейти обратно: а б Г. Ридстедт; Э. Бурштейн; Д. Бонех; К. Джексон (2010). «Перебор фреймов: исследование уязвимостей кликджекинга на популярных сайтах» . 3-й семинар по безопасности и конфиденциальности Web 2.0 . IEEE.
  3. ^ «Архивная копия» . Архивировано из оригинала 6 июня 2013 г. Проверено 1 ноября 2014 г. {{cite web}}: CS1 maint: архивная копия в заголовке ( ссылка )
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f3f303675ddc844112c52785a6f6f818__1699851180
URL1:https://arc.ask3.ru/arc/aa/f3/18/f3f303675ddc844112c52785a6f6f818.html
Заголовок, (Title) документа по адресу, URL1:
Framekiller - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)