Выявление недружелюбных к iframe сайтов в рельсах - даже если x-frame-options отсутствует в заголовке

Фон:

Я работаю над приложением rails, которое будет открывать статьи внутри самого приложения через iframe (с навигационной панелью вверху моего приложения, вроде StumbleUpon). Но я заметил, что некоторые веб-сайты, публикующие статьи (примеры: pitchfork.com, vox.com, theverge.com), предотвращают загрузку в iframe, задав для X-Frame-Options значение SAMEORIGIN или DENY.

Мой текущий план по обходу этой проблемы - посмотреть на заголовок ссылки и проверить его, чтобы увидеть, содержит ли он X-Frame-Options. Если это так, я откажусь от iframe и просто открою исходный сайт в новой вкладке.

Кажется, этот метод работает для некоторых веб-сайтов (например, pitchfork.com), потому что, когда я запрашиваю заголовок с pitchfork.com, я получаю следующее:

server: nginx/1.4.6 (Ubuntu)
content-type: text/html; charset=utf-8
x-frame-options: SAMEORIGIN
date: Wed, 27 Jan 2016 17:47:54 GMT
x-varnish: 912263733 912263044
age: 8
via: 1.1 varnish
connection: keep-alive

Проблема:

Для некоторых веб-сайтов (например, vox.com), когда я загружаю их в iframe, консоль разработчика Chrome сообщает мне:, что x-frame-options предотвращает загрузку сайта в iframe. Но когда я просматриваю заголовок, нигде нет x-frame-options! Все, что я получаю, это:

server: nginx/1.6.2
date: Wed, 27 Jan 2016 17:26:15 GMT
content-type: text/html
content-length: 172
connection: close

Как vox.com это делает? Для дальнейшего разъяснения я попытался использовать этот инструмент, который я нашел в другой пост stackoverflow, и он также не смог правильно определить, что vox.com блокирует фреймы с помощью x-frame-options.

1) Может ли Vox установить параметры x-frame где-нибудь, кроме заголовка? Если второе, как я могу это обнаружить?

2) Какие-либо другие альтернативные стратегии, которые вы рекомендуете для обнаружения недружелюбных к iframe сайтов, чтобы я мог вместо этого настроить их открытие в новой вкладке?


person drajan    schedule 27.01.2016    source источник


Ответы (1)


Взгляните на сетевой трафик, записанный в консоли Chrome. В своем приложении вы просматриваете заголовки ответа HTTP 301 Moved Permanently, который затем перенаправляет вас в место, которое действительно возвращает заголовок X-Frame-Options: SAMEORIGIN.

Другие методы, такие как новый заголовок Content-Security-Policy или JavaScript. код, может использоваться другими веб-сайтами для предотвращения встраивания iframe. Но в случае с vox.com вы просто смотрите на заголовки неправильного ответа.

person depquid    schedule 27.01.2016
comment
Отлично, при просмотре части сетевого трафика консоли Chrome обнаружился заголовок с X-Frame-Options. Я предполагаю, что моя проблема сейчас в том, что rails не может обнаружить это при запросе заголовка для веб-сайта - не уверен, что происходит перенаправление, потому что это происходит, даже когда я запрашиваю заголовок для домашней страницы: www.vox.com Поскольку это больше о рельсах, я задам новый вопрос. Спасибо! - person drajan; 27.01.2016