Параметры фрейма X и контент-безопасности-политики для кадров в Firefox


Спецификация политики безопасности контента говорит

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

Поэтому, насколько я понимаю, если присутствуют оба заголовка Content-Security-Policy и X-Frame-Options, то X-Frame-Options следует игнорировать.

У меня есть веб-приложение с обоими заголовками, и похоже, Firefox 38 игнорирует Content-Security-Policy заголовок и использует вместо него заголовок X-Frame-Options.

Мои примеры заголовков:

Content-Security-Policy:frame-ancestors 'self' local.com *.local.com 
X-Frame-Options:Allow-From http://local.com

Я хочу, чтобы мой фрейм был доступен из local.com и все поддомены. Local.com это просто пример. Если заголовок X-Frame-Options присутствует, то он позволяет только http://local.com , но если я удалю его, то Firefox использует Заголовок Content-Security-Policy и прекрасно работает для доменов и поддоменов.

Означает ли это, что Firefox не реализует эту часть? Или это просто слишком новая спецификация, а Firefox этого не делает реализовать его еще не успели? Есть ли другой способ заставить Content-Security-Policy использовать заголовок?

Я знаю, что Chrome отлично работает с Content-Security-Policy, а IE может работать только с X-Frame-Options, но, похоже, я не могу объединить оба заголовка, так как Firefox работает не так, как нужно.

Один из возможных способов-послать X-Frame-Options только для IE, а Content-Security-Policy для всех остальных, но есть ли лучший способ?

Спасибо!

1 5

1 ответ:

frame-ancestors появился только в CSP Level 2 (см. changelog), поэтому очень вероятно, что Firefox 38 просто еще не реализовал его.

Вы можете проверить это довольно легко, наблюдая за консолью JavaScript-браузер будет отображать предупреждения о каждой из директив CSP, которые он не понимает.

Вы также можете скачать Firefox с каналаbeta и посмотреть, имеет ли это значение, но очевидно, что это не сильно поможет, если вы просто хотите построить совместимый решение для производственного сайта...