Почему фреймы считаются опасными и представляют угрозу безопасности? - PullRequest
105 голосов
/ 03 сентября 2011

Почему фреймы считаются опасными и представляют угрозу безопасности? Может кто-нибудь описать пример случая, когда его можно использовать злонамеренно?

Ответы [ 5 ]

115 голосов
/ 24 февраля 2012

Элемент IFRAME может представлять угрозу безопасности, если ваш сайт встроен в IFRAME на враждебном сайте . Google "clickjacking" для более подробной информации. Обратите внимание, что не имеет значения, если вы используете <iframe> или нет. Единственная реальная защита от этой атаки - добавить HTTP-заголовок X-Frame-Options: DENY и надеяться, что браузер знает свою работу.

Кроме того, элемент IFRAME может представлять угрозу безопасности, если какая-либо страница на вашем сайте содержит уязвимость XSS, которую можно использовать . В этом случае злоумышленник может распространить атаку XSS на любую страницу в том же домене, которую можно убедить загрузить в пределах <iframe> на странице с уязвимостью XSS. Это связано с тем, что контенту того же источника (того же домена) разрешен доступ к родительскому контенту DOM (практически выполняется JavaScript в документе "host"). Единственный реальный способ защиты от этой атаки - добавить HTTP-заголовок X-Frame-Options: DENY и / или всегда правильно кодировать все данные, отправленные пользователем (то есть никогда не иметь XSS-уязвимости на вашем сайте - легче сказать, чем сделать).

Это техническая сторона вопроса. Кроме того, существует проблема пользовательского интерфейса. Если вы научите своих пользователей доверять тому, что строка URL-адресов не должна меняться при нажатии на ссылки (например, на вашем сайте используется большой iframe со всем фактическим контентом), тогда пользователи не заметят ничего в будущем и в случае фактической уязвимости безопасности. Например, у вас может быть уязвимость XSS на вашем сайте, которая позволяет злоумышленнику загружать контент из враждебного источника в ваш iframe. Никто не может заметить разницу, потому что строка URL по-прежнему выглядит идентично предыдущему поведению (никогда не изменяется), а содержимое «выглядит» действительным, даже если оно из враждебного домена, запрашивающего учетные данные пользователя.

Если кто-то утверждает, что использование элемента <iframe> на вашем сайте опасно и создает угрозу безопасности, он не понимает, что делает элемент <iframe>, или говорит о возможности уязвимостей, связанных с <iframe> в браузерах. Безопасность тега <iframe src="..."> равна <img src="..." или <a href="...">, если в браузере нет уязвимостей. И если есть подходящая уязвимость, возможно, ее можно будет запустить даже без использования элемента <iframe>, <img> или <a>, поэтому не стоит рассматривать эту проблему.

Однако, следует помнить, что содержимое из <iframe> может инициировать навигацию верхнего уровня по умолчанию . То есть контент в <iframe> может автоматически открывать ссылку на текущее местоположение страницы (новое местоположение будет видно в адресной строке). Единственный способ избежать этого - добавить атрибут sandbox без значения allow-top-navigation. Например, <iframe sandbox="allow-forms allow-scripts" ...>. К сожалению, песочница также всегда отключает все плагины. Например, содержимое Youtube не может быть помещено в «песочницу», поскольку Flash Player все еще требуется для просмотра всего содержимого Youtube. Ни один браузер не поддерживает одновременное использование плагинов и запрещает навигацию верхнего уровня.

Обратите внимание, что X-Frame-Options: DENY также защищает от рендеринга производительности по побочным каналам, которая может считывать контент из разных источников (также известный как « Pixel perfect Timing Attacks »).

72 голосов
/ 03 сентября 2011

Как только вы выводите контент из другого домена, вы в основном доверяете этому домену, чтобы он не обслуживал вредоносное ПО.

Нет ничего плохого в фреймах как таковых. Если вы контролируете содержимое iframe, они совершенно безопасны.

13 голосов
/ 17 октября 2013

Я предполагаю междоменный iFrame, так как предположительно риск был бы ниже, если бы вы контролировали его самостоятельно.

  • Clickjacking является проблемой, если ваш сайт включен в качестве iframe
  • Скомпрометированный iFrame может отображать вредоносный контент (представьте, что iFrame отображает поле входа вместо рекламы)
  • Включенный iframe может выполнять определенные JS-вызовы, такие как оповещение и подсказка, которые могут раздражать вашего пользователя
  • Включенный iframe может перенаправлять через location.href (да, представьте, что 3-кадровый кадр перенаправляет клиента с bankofamerica.com на bankofamerica.fake.com)
  • Вредоносные программы внутри 3p-фрейма (java / flash / activeX) могут заразить вашего пользователя
2 голосов
/ 03 сентября 2011

«Опасно» и «Угроза безопасности» - это не первые вещи, которые приходят на ум, когда люди упоминают о фреймах… но их можно использовать при атаках с кликом .

0 голосов
/ 19 июня 2019

ifram также является уязвимостью против Cross Frame Scripting "https://www.owasp.org/index.php/Cross_Frame_Scripting"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...