2016-09-08 1 views
1

У меня есть IFRAME в WebView, который загружает скрипт из актива Android приложения, используя следующие: -Как CSP ограничить файл: /// urls в chrome?

<script src='file:///android_asset/trusted-iframe-script.js'></script> 

Теперь я хочу, чтобы иметь политику защиты контента на IFRAME таким образом, что никакой другой сценарий не может быть загружен , Для этого я добавил следующее в IFrame ПСУ

script-src: 'file:///android_asset/trusted-iframe-script.js'; 

Это не работает, так как файл Ури игнорируется хромом.

The source list for Content Security Policy directive 'script-src' contains an invalid source: 'file:///android_asset/trusted-iframe-script.js'. It will be ignored. 
Refused to load the script 'file:///android_asset/trusted-iframe-script.js' because it violates the following Content Security Policy directive: "script-src file:///android_asset/trusted-iframe-script.js". 

Я прочитал о файловой системе Урии, но это требует запрос на доступ к пользователю, но я на самом деле нужен только доступ к своему собственному имуществу, а не файловая системе в целом. Я также читал о blob: urls, но это похоже на наложение всего скрипта.

Каков правильный путь для csp ограничивать только файлы URL?

ответ

0

Короче говоря, это невозможно сделать для изолированного iframe.

Chrome CSP не позволяет указывать URL-адрес файла как скрипт src. Вы можете использовать файл директивы: (без какого-либо url), и это будет работать, если iframe не был изолирован. Но это плохая идея, так как

A. мой IFrame является песочнице, и

B. это недокументированная ключевое слово, которое может перестать работать в любое время.

Я также попытался создать blob-url для содержимого и вместо этого передать это в iframe, но это тоже не работает, если вы не установите разрешающий-то же происхождение атрибут sandbox iframe.

0

СНТ URI не имеют кавычки - поэтому попробуйте script-src: file:///android_asset/trusted-iframe-script.js;

Если это не работает большинство Android браузеров теперь поддерживают CSP2, который позволяет указать хэш для поддерживаемого сценария.

0

Если ПЕС установлен на «странице», которая содержит IFRAME, вы должны использовать ребенка ЦСИ: директивы вместо скрипта-Src: (Source)

Тогда я не использовать, как включить файл и утверждать, вы можете попробовать с:

  • ребенка-Src: файл ///android_asset/trusted-iframe-script.js

    // я не могу проверить это

  • ребенка ЦСИ: Файловая система: ///android_asset/trusted-iframe-script.js

    // source и проверить, по-прежнему требует запрашивающий доступ к пользователю

  • не
  • ребенка ЦСИ: https://your.trusted.website.com/trusted-iframe-script.js

    // это должно работать, но это требует, чтобы доверенный сервер и приложение должно подключаться к сети (не очевидное условие)

Смежные вопросы