В последнее время некоторые веб-сайты, такие как 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
- или постоянный белый список моих доверенных источников.
источник
Ответы:
Методы, одобренные приложениями 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
У хаков, однако, есть свои недостатки, потому что они, как известно, вызывают дыры в безопасности, по крайней мере, в первой.
источник
Вы можете редактировать эти настройки на вкладке содержимого, к которой вы можете получить доступ напрямую, набрав
chrome://settings/content
в адресной строке. Вы можете внести в белый список определенные домены для определенных типов контента.источник