Почему iframe считается опасным и угрозой безопасности?

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

Ответ 1

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

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

Ответ 2

Элемент 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 ").

Ответ 3

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

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

Ответ 4

"Опасные" и "Риск безопасности" - это не первая вещь, о которой spring следует помнить, когда люди упоминают iframes... но их можно использовать в clickjacking.