Как смягчить Политику безопасности контента в Chrome?


18

В последнее время некоторые веб-сайты, такие как Facebook, используют Политику безопасности контента (CSP) для ограничения загрузки скриптов из «ненадежных источников». Например, при запросе HTML-контента Facebook (например, https://www.facebook.com ) HTTP-ответ Facebook включает в себя следующий заголовок ответа:

x-webkit-csp:default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net;style-src * 'unsafe-inline';connect-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.spotilocal.com:* https://*.akamaihd.net ws://*.facebook.com:* http://*.akamaihd.net;

Это влияет на некоторые букмарклеты, которые требуют загружать и запускать библиотеки Javascript из ненадежных источников.

Например, всякий раз, когда я пытаюсь запустить букмарклет Show Anchors на странице Facebook, выполнение этого букмарклета завершается неудачно, так как он пытается загрузить jQuery из ненадежного источника. В консоли разработчика Chrome будет сказано:

Refused to load the script 'http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js' because it violates the following Content Security Policy directive: "script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://*.fbcdn.net *.facebook.net *.google-analytics.com *.virtualearth.net *.google.com 127.0.0.1:* *.spotilocal.com:* chrome-extension://lifbcibllhkdhoafpjfnlhfpfgnpldfl 'unsafe-inline' 'unsafe-eval' https://*.akamaihd.net http://*.akamaihd.net".

Я нашел страницу документации Chrome по этой теме, но она относится только к расширениям Chrome .

Я ищу решения, которые позволяют мне

  • либо на один раз отключить CSP
  • или постоянный белый список моих доверенных источников.


@Rudie Будет ли это работать для Chrome Mobile?
Майкл

@Michael If Chrome Mobile поддерживает современные расширения. WeRequest является своего рода новым. Я не пользуюсь Chrome Mobile, поэтому понятия не имею.
Руди

Ответы:


2

Методы, одобренные приложениями Chrome

Используйте библиотеки шаблонов

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

Вам нужно будет использовать «песочницу», чтобы изолировать любой контент, с которым вы хотите сделать что-то «полезное». Песочница поднимает CSP на указанном вами контенте.

Песочница локального контента

«Песочница» позволяет указанным страницам обслуживаться в изолированном, уникальном источнике. Эти страницы затем освобождаются от их политики безопасности контента. Страницы с песочницей могут использовать iframes, встроенные сценарии и eval () (и последние две являются предотвращаемыми). Это исправит «unsafe-inline» и «unsafe-eval».

  • Используйте встроенные скрипты в песочнице
  • Включить песочницу в манифест

Доступ к удаленным ресурсам

Вы можете получать удаленные ресурсы через XMLHttpRequest и обслуживать их с помощью blob :, data: или filesystem: URL. Это должно исправить проблему с загрузкой jQuery.

Требование к манифесту

Чтобы иметь возможность выполнять перекрестное происхождение XMLHttpRequests, вам нужно добавить разрешение для хоста удаленного URL.

Перекрестная происхождения XMLHttpRequest

Извлеките удаленный URL в приложение и используйте его содержимое в качестве blob:URL.


Я не думаю, что вы можете сделать что-нибудь из этого. Чтобы исправить заголовки unsafe-evalи unsafe-inlineответы, только владелец сценария может исправить код или, если он находится в свободном доступе, вы можете исправить это. Все это, вероятно, единовременное исправление.


Хаки

UnsafeWindow

http://wiki.greasespot.net/UnsafeWindow

Внедрение скрипта контента

http://wiki.greasespot.net/Content_Script_Injection


У хаков, однако, есть свои недостатки, потому что они, как известно, вызывают дыры в безопасности, по крайней мере, в первой.


0

Вы можете редактировать эти настройки на вкладке содержимого, к которой вы можете получить доступ напрямую, набрав chrome://settings/contentв адресной строке. Вы можете внести в белый список определенные домены для определенных типов контента.


9
Где именно в настройках контента я это делаю и как? Я попытался добавить свой сайт в «исключение файлов cookie и данных сайта», но безрезультатно. Ни одна из других настроек не представляется актуальной.
Майкл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.