Iframe Restritions - PullRequest
       3

Iframe Restritions

0 голосов
/ 24 января 2019

Есть ли документация, объясняющая, что вы не можете сделать, чтобы сделать iframe непригодным для использования?

Вы не можете использовать Facebook iframe, потому что x-frame-options запрещен

Twitter, вы не можете использовать iframe, потому что предок нарушает следующую директиву политики безопасности контента: "frame-ancestors" self

Есть ли где-нибудь, где я могу проверить, что можно, а что нельзя настроить на прием iframe

1 Ответ

0 голосов
/ 28 января 2019

Насколько мне известно, есть два HTTP-заголовка, которые можно использовать для предотвращения загрузки веб-сайта в качестве фрейма на другие веб-сайты:

X-Frame-Options

Заголовок ответа HTTP X-Frame-Options можно использовать, чтобы указать, разрешено ли браузеру отображать страницу в <frame>, <iframe>, <embed> или <object>.

Возможные значения:

  • deny
  • sameorigin
  • allow-fromuri

Вы можете узнать больше о том, что они делают на MDN .

Обратите внимание, что согласно спецификации frame-ancestors имеет приоритет над X-Frame-Options:

Директива frame-ancestors отменяет заголовок X-Frame-Options. Если у ресурса есть обе политики, СЛЕДУЕТ применять политику предков фреймов, а политику опций X-Frame СЛЕДУЕТ игнорировать.

Из примера, который вы опубликовали, похоже, что Facebook имеет X-Frame-Options: deny в качестве заголовка ответа, что предотвращает его загрузку в iframe из любого места (в браузерах, которые поддерживают этот заголовок).

Content-Security-Policy

Используя либо:

  • frame-ancestors, который ограничивает какие домены могут вставлять этот сайт в iframe

    Директива frame-ancestors HTTP Content-Security-Policy (CSP) определяет допустимых родителей, которые могут встраивать страницу, используя <frame>, <iframe>, <object>, <embed> или <applet>.

    Основное отличие от X-Frame-Options в том, что

    многие пользовательские агенты реализуют SAMEORIGIN таким образом, чтобы он совпадал только с местоположением документа верхнего уровня. Эта директива проверяет каждого предка. Если какой-либо предок не совпадает, загрузка отменяется.

  • frame-src, который ограничивает какие домены этот сайт может вставлять в iframe

    Директива frame-src HTTP Content-Security-Policy (CSP) определяет допустимые источники для загрузки вложенных контекстов просмотра с использованием таких элементов, как <frame> и <iframe>.

Подробнее о frame-ancestors и frame-src вы можете узнать из MDN.

Из приведенного вами примера кажется, что в Twitter есть Content-Security-Policy: frame-ancestors 'self', что означает, что этот веб-сайт может быть встроен только в один домен.

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