Нарушение политики безопасности контента

На моей странице я дал иерархию:

Page - http://179.15.31.103/path

|- frame - //proxy.domain.training/path 

    |- frame - https://app.domain.training/path

И внутренняя рамка поставляется с данным заголовком

Content-Security-Policy:frame-ancestors app.domain.training proxy.domain.training domain.training *.domain.training 179.15.31.103 

Вроде все правильно, но у меня такая ошибка в хроме (ошибка и в фф):

Отказался отображать «https://app.domain.training/path' во фрейме, поскольку предок нарушает следующую директиву политики безопасности контента: «frame-ancestors app.domain.training proxy.domain.training domain.training *.domain.training 179.15.31.103».

Я думаю, что это может быть из-за https, но я не могу это проверить.


person DimaIT    schedule 20.07.2016    source источник


Ответы (1)


Я бы предложил добавить схемы URL к доменам в заголовке Content-Security-Policy. Возможно, вам придется указать домен дважды, чтобы охватить как http, так и https, но это, похоже, решает проблему.

Я столкнулся с аналогичной проблемой; если родительская страница обслуживалась по простому http, а страница iframe обслуживала заголовок CSP с включенным родительским доменом, но без схемы URL, и Firefox, и Chrome выдавали указанную вами ошибку.

Самая большая подсказка, которую я нашел относительно того, почему это происходит, находится в примечаниях к выпуску Pale Moon (форк Firefox):

26.5.0 (28 сентября 2016 г.) Исправления/изменения:

Реализовано критическое изменение спецификации CSP (политики безопасности контента); когда страница с CSP загружается через http, Pale Moon теперь интерпретирует директивы CSP, чтобы также включать https-версии хостов, перечисленных в CSP, если схема (http/https) не указана явно. Это противоречит CSP 1.0, который является более строгим и не разрешает такой межпротокольный доступ, но соответствует CSP 2, где это разрешено.

https://www.palemoon.org/releasenotes-archived.shtml

Однако похоже, что Pale Moon 26.5.0 по-прежнему ведет себя так же, как Firefox и Chrome.

Скотт Хелме также написал в блоге об похожей проблеме с Safari, но похоже теперь это решено.

Еще одна вещь, на которую следует обратить внимание, — это если страница во фрейме также содержит заголовок X-Frame-Options. Я считаю, что Firefox и Safari — единственные браузеры, которые поддерживают как этот заголовок, так и заголовок CSP frame-ancestors, и, конечно, в случае с Firefox X-Frame-Options имеет приоритет. А с X-Frame-Options ALLOW-FROM вам разрешено указывать только один URI, поэтому вам, возможно, придется взглянуть на различные заголовки для разных браузеров в зависимости от ваших потребностей.

person Jimadine    schedule 25.11.2016
comment
Да, это выглядит правильно. В моем случае эта ошибка была исправлена ​​путем явного добавления протоколов http и https в заголовок CSP. - person DimaIT; 30.11.2016