Если у меня есть веб-страница с CSP, настроенным на:
default-src 'self'; img-src *
Или подобное, и у меня есть такой iframe:
some legal content
<iframe sandbox="allow-scripts" srcdoc="<script>alert('arbitrary code')</script>"></iframe>
Можно ли разрешить коду в iframe не подчиняться CSP родительского фрейма и разрешать встроенные сценарии/стили, контент из других доменов или любые другие произвольные HTML-вещи, которые не нарушают ограничения песочницы?
В настоящее время это даст:
[Ошибка] Отказано в выполнении встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: «default-src 'self'». Обратите внимание, что «script-src» не был задан явно, поэтому «default-src» используется как запасной вариант. (о: srcdoc, строка 1)
спецификация CSP подтверждает, что это правильное поведение:
Всякий раз, когда пользовательский агент создает документ
iframe
srcdoc
в контексте просмотра, вложенном в защищенный ресурс, если пользовательский агент применяет любые политики для защищенного ресурса, пользовательский агент ДОЛЖЕН применить эти политики в документеiframe
srcdoc
.
'self'
). Или вам нужно добавитьframe-src https://domain.com/; child-src https://domain.com/
в родительский документ, потому чтоframe-src
иchild-src
(используемые для iframe в старых и новых браузерах соответственно) наследуются отdefault-src
, если они не установлены явно. 26.05.2015