Блокирует ли Политика безопасности контента закладки?

javascript security firefox mozilla content-security-policy

4930 просмотра

5 ответа

15488 Репутация автора

Блокирует ли Mozillas CSP выполнение Javascript из закладки по умолчанию?

Это можно настроить для этого?

Автор: PiTheNumber Источник Размещён: 30.09.2011 08:03

Ответы (5)


18 плюса

50247 Репутация автора

Решение

По состоянию на 2017 год ответ по-прежнему является окончательным «возможно» - так же, как когда этот ответ был первоначально опубликован в 2011 году. В спецификации четко говорится:

Политика, применяемая к ресурсу, НЕ ДОЛЖНА мешать работе функций агента пользователя, таких как дополнения, расширения или букмарклеты.

И это действительно то поведение, которое я вижу в Chrome 61: букмарклет будет работать на https://addons.mozilla.org/ , на сайте которого нет строгой политики безопасности контента script-src: 'unsafe-inline'. Тем не менее в Firefox 56 букмарклетов не будут работать на этом сайте, и сообщается о нарушении CSP.

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

Автор: Wladimir Palant Размещён: 30.09.2011 08:25

5 плюса

257 Репутация автора

Поведение указано в mozillas wiki.

CSP не должен мешать работе пользовательских сценариев (таких как надстройки браузера и букмарклеты).

Посмотрите здесь: https://wiki.mozilla.org/Security/CSP/Specification#Non-Nortive_Client-Side_Considerations

Автор: sfx Размещён: 03.12.2012 09:07

3 плюса

20128 Репутация автора

Да, CSP блокирует закладки в Mozilla Firefox. В этом есть ошибка .

Однако вы можете обойти это ограничение, вставив код JS во внешнюю таблицу стилей CSS, как это делает мой букмарклет Top News Feed :

Внешний CSS:

#topnewsfeed { font-family: '(function(){/*payload*/})()'; }

Букмарклет JS:

(function() {
    var a = document.createElement("link");
    a.rel = "stylesheet";
    a.href = "//niutech.github.io/topnewsfeed/topnewsfeed.css";
    a.onload = function() {
        var a = b.currentStyle ? b.currentStyle.fontFamily : document.defaultView.getComputedStyle(b, null).fontFamily;
        eval(a.replace(/^["']|\\|["']$/g, ""));
    };
    document.body.appendChild(a);
    var b = document.createElement("div");
    b.id = "topnewsfeed";
    document.body.appendChild(b);
})()

Букмарклет загружает файл CSS, содержащий код JS, добавляет элемент, стилизованный под этот CSS, читает атрибут стиля элемента и evalкод.

Автор: niutech Размещён: 09.08.2014 11:30

0 плюса

26 Репутация автора

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

См. Https://groups.google.com/d/msg/greasemonkey-users/mw61Ynw5ORc/Gl_BNUhtSq0J.

Автор: Bill D Размещён: 09.05.2015 04:37

0 плюса

6 Репутация автора

Как заблокировать запуск букмарклетов на моей веб-странице?

Автор: user2613137 Размещён: 15.07.2019 08:16
Вопросы из категории :
32x32