Как использовать CSP на iFrames - PullRequest
1 голос
/ 30 мая 2019

Я использую iFrame для содержания внешнего источника HTML https://good.com/main.html

<iframe src=“https://good.com/main.html" scrolling="no" style="overflow: hidden; height: 700px;"></iframe>

Но good.com/main.html импортирует и выполняет следующий javascript

https://good.com/a.js
https://good.com/b.js
https://bad.com/c.js

Есть ли способ запретить good.com/main.html импорт и выполнение bad.com/c.js? В частности, не допускайте использования ресурсов, у которых нет того же домена, что и https://good.com?

Я пытался песочница iFrame

<iframe sandbox=“allow-same-origin allow-scripts” src=“https://good.com/main.html” scrolling="no" style="overflow: hidden; height: 700px;"></iframe>

Но он все еще импортирует и выполняет https://bad.com/c.js

Есть ли способ предотвратить импорт источника и выполнение каких-либо внешних js?

Я читал о CSP на iFrames , но я не уверен в их использовании.

1 Ответ

2 голосов
/ 30 мая 2019

Вообще говоря, вы не можете.Iframes имеют свой собственный CSP, и вы не можете передать политику с родительской страницы.

Тем не менее, атрибут "csp" элемента iframe, на который вы ссылаетесь в вопросе, в некоторой степени позволяет это сделать.Это позволяет вам запрашивать , чтобы источник iframe применял CSP, который вы установили в атрибуте "csp";но вы не можете навязать это, просто спросите.Таким образом, теоретически вы можете сделать:

<iframe csp="default-src 'none';" ...>

Источник iframe может реализовывать или не реализовывать ваш CSP, который вы запрашиваете.

Обратите внимание, что это новое и является (как сообщается) поддерживается только в Chrome и Opera.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...