Як відключити CSP у Firefox лише для закладок?


26

Сьогодні я помітив, що не можу запускати закладки на https://github.com/ через обмеження політики безпеки вмісту (CSP). Чи є спосіб відключити CSP у Firefox лише для закладок, а не для всього іншого?

Я помітив security.csp.enableваріант в about:config, але це повністю відключить CSP. Наступне повідомлення реєструється для консолі під час активації закладок:

Timestamp: 04/22/2013 02:39:05 PM
Warning: CSP WARN:  Directive inline script base restriction violated

Source File: https://github.com/
Line: 0
Source Code:
javascript:...

Відповіді:


8

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

Однак, звичайно, наміри користувацьких скриптів та закладок відрізняються - користувацькі сценарії запускаються автоматично, тоді як закладки на вимогу. Ви можете обійти це, наприклад, створивши <button>в usercript, додавши його на сторінку та встановивши onclickна цю кнопку слухача подій, щоб запустити код закладок.

Код повинен мати такий вигляд:

// ==UserScript==
// @name            Name
// @description     Description
// @version         0.1
// @namespace       example.Lekensteyn
// @grant           none
// @include         http*://github.com/*/*/commit/*
// ==/UserScript==

var myBookmarklet = function () {
    // here goes the code of the bookmarklet
};

var newButton = document.createElement('button');
newButton.innerHTML = 'Execute my bookmarklet';

newButton.addEventListener('click', function(evt) {
    myBookmarklet();
});

document.getElementById('someElement').appendChild(newButton);

Взяте майже буквально з мого користувача, який також націлений на GitHub. Ви можете налагоджувати сценарії користувачів у Firebug, використовуючи debugger;ключове слово у сценарії.

Зауважте, однак, що сама Firebug наразі також підпадає під дію CSP, тому ви не можете, наприклад, виконувати код у консолі (але ви можете перевіряти свої сценарії користувачів у режимі "лише для читання"). Про це дбають у цій помилці .


1
Особливо важлива особливість на замовлення . У мене є закладки, які вставляють швидкий текст-області eval з деякими функціями, які не заповнюють значну частину сторінки, одну для створення QR-коду для поточної сторінки та деякі інші менші частини. Вони не є специфічними для GH. Сила закладок полягає в тому, що їх можна створити та видалити дуже легко. GreaseMonkey вже встановлений, але це не вирішить проблему CSP. Дякуємо за пропозиції, можливо, рішення для Firebug також буде корисним для закладок.
Лекенштейн

4
На жаль, виправлення Firebug виправить лише Firebug. З запису блогу Github на CSP : Як було зрозуміло специфікою CSP, на CSP не має впливати закладка браузера. (..) Але жоден із браузерів не відповідає правильному. Всі вони спричиняють порушення CSP і заважають функціонувати закладки. Можливо, вам слід розібратися у цій справі більш ретельно та повідомити про проблему на Bugzilla.
jakub.g

2
BTW ви можете використовувати GM_registerMenuCommand для виклику функції за запитом. Не забувайте @grant GM_registerMenuCommand. Він додає запис до меню Greasemonkey, доступний під (GM logo) > User Script Command.... Таким чином ви можете легко перетворити свої закладки в сценарії користувачів.
jakub.g

Я не розумію ... створення кнопки на сторінці для завантаження коду при натисканні не працює, вона все одно кидає виняток CSP
Майкл

7

Github каже, що вона повинна працювати відповідно до специфікації, але жоден браузер не підходить правильно:

https://github.com/blog/1477-content-security-policy#bookmarklets

Ви повинні відкрити помилку улюбленого веб-переглядача для цієї проблеми або проголосувати за нього:


2
Для запису існує ще одна помилка Firefox, спеціально для основної функціональності закладок (менше шансів
зациклюватися

Щоб зберегти інших клік, помилка 1478037, згадана @djpohly у коментарі вище, стосується дозволу запуску закладок до тих пір, поки вони не завантажують зовнішні ресурси.
waldyrious

1

Багато відповідей рекомендують сценарії користувачів (наприклад, TamperMonkey або GreaseMonkey), але я хочу пам’ятати, що деякі сторінки в чорний список є причиною цих розширень. (Звичайно, ви можете перекрити чорний список, але чорти мали на увазі безпеку і заблокували ці сторінки).

Наприклад, я хотів за допомогою закладки швидко перейти до ReviewMeta з будь-якого списку Amazon, але Amazon заблокував незахищені джерела сценаріїв (оновлення: не було заблоковано, але у мене не було сценарію, прикро). Розширення сценаріїв користувачів за замовчуванням перебувають у чорному списку на банківських та торгових сайтах, щоб запобігти встановленню / використанню зловмисних сценаріїв користувачів.

(PS Це не відповідь сама по собі, але я вважав, що було б корисно пам’ятати про це, перш ніж переглядати користувальницький сценарій, просто щоб знайти сторінку у чорному списку та вагаючись із тим, як її зняти з чорного списку.)


0

Я створив "вирішення" цієї проблеми, використовуючи сценарій користувача Greasemonkey (у Firefox). Тепер ви можете мати закладки на всіх веб-сайтах CSP і https: //, а також мати закладки у приємному, легко редагованому файлі бібліотеки, а не окремо розміщуватись у закладку.

Дивіться: https://groups.google.com/d/msg/greasemonkey-users/mw61Ynw5ORc/Gl_BNUhtSq0J


-1

Якщо ви хочете запускати свої закладки на веб-сайтах з підтримкою CSP у Firefox, ви можете використовувати таблиці стилів CSS, дивіться мою відповідь на StackOverflow .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.