Выявление недействительных сайтов 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? Для дальнейшего разъяснения я попытался использовать этот инструмент, который я нашел в другом посте stackru, и он также не смог правильно определить, что vox.com блокировал iframes через x-frame-options.

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам