Як розслабити політику безпеки вмісту в 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 Якщо Chrome Mobile підтримує сучасні розширення. WeRequest - це щось нове. Я не використовую Chrome Mobile, тому я не маю уявлення.
Rudie

Відповіді:


2

Методи, схвалені Chrome Apps

Використовуйте бібліотеки шаблонів

Використовуйте бібліотеку, яка пропонує попередньо складені шаблони, і все готово. Ви все ще можете використовувати бібліотеку, яка не пропонує попередньої компіляції, але це потребує певної роботи з вашого боку, і існують обмеження.

Вам потрібно буде використовувати пісочницю, щоб ізолювати будь-який вміст, до якого ви хочете робити «eval» речі. Пісочниця піднімає CSP на вказаний вами вміст.

Місцевий вміст пісочниці

Пісочниця дозволяє подавати вказані сторінки в пісочне, унікальне походження. Потім ці сторінки звільняються від політики безпеки вмісту. Сторінки з пісочним вікном можуть використовувати iframe, вбудований сценарій та eval () (а останні два - це запобігання). Це виправить "небезпечний вбудований" і "небезпечний-eval".

  • Використовуйте вбудовані сценарії в пісочниці
  • Включіть пісочницю в маніфест

Доступ до віддалених ресурсів

Ви можете отримати віддалені ресурси через XMLHttpRequest та обслуговувати їх через blob :, data :, або файлову систему: URL-адреси. Це повинно вирішити проблему із завантаженням jQuery.

Вимога маніфесту

Щоб мати змогу зробити перехресне походження XMLHttpRequests, вам потрібно додати дозвіл для хоста віддаленої URL-адреси.

Перехресне походження XMLHttpRequest

Додайте віддалену URL-адресу в додаток і подайте її вміст як blob:URL-адресу.


Я не думаю, що ти можеш зробити щось із цього. Щоб виправити заголовки unsafe-evalта unsafe-inlineвідповіді, код може виправити лише власник сценарію, або якщо він знаходиться у відкритому доступі, ви можете його виправити. Все це, мабуть, одноразове виправлення.


Хаки

Небезпечне вікно

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.