Почему 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.
Ответ 5
ifram также является уязвимостью против кросс-фрейм-скриптинга " https://www.owasp.org/index.php/Cross_Frame_Scripting "