2011-09-30 16 views
17

Mozillas CSPブロックはデフォルトでJavascript from a bookmarkを実行しますか?コンテンツセキュリティポリシーはブックマークレットをブロックしますか?

これを行うように設定できますか? 2017年のよう

+0

なぜ、単にブックマークレットを無効にしたいですか? – ThiefMaster

+0

私は、WebページにJavascriptを注入したくないので、他の人がそうするかもしれないと心配していません。 – PiTheNumber

+2

いつもgreasemonkeyのようなものがあります。 **ユーザー**が自分自身に影響するウェブサイトにjavascriptを注入したいと決心した場合、誰にも彼の行為を妨げる権利はありません。 – ThiefMaster

答えて

16

、答えは「多分」まだ決定的である - ちょうどこの答えは、もともと2011年specificationに掲載されたときのように明確に述べている:リソースに施行

ポリシーを妨害してはなりませんアドオン、拡張機能、またはブックマークレットなどのユーザーエージェント機能の操作

そして、これは確かに私はクローム61に表示動作です:ブックマークレットは、https://addons.mozilla.org/script-src: 'unsafe-inline'せず、厳格なコンテンツセキュリティポリシーを持つサイトを実行します。 Firefox 56では、ブックマークレットはこのウェブサイトでは実行されず、CSP違反が報告されています。

この問題については、Firefox bug reportで非常に長い議論があり、特にsimilar discussion on the W3C specにリンクしています。今のところ、CSPの影響を受けていないブックマークレットに本当に頼ることはできません。常にCSPを無効にすることはできますが、これは重要な保護レイヤーではありません。

+0

これをテストしてくれてありがとう!必要に応じてCSPを簡単に切り替えることができます。 about:configを開き、 "security.csp.enable"を "false"に設定します。とにかくあなた自身の小冊子を走らせることができます。 – PiTheNumber

+3

@PiTheNumber:私の答えでは、CSPのスイッチを切ることができると言われており、そうしないようにアドバイスしています。 –

+0

申し訳ありませんが、私はあなたがコメントを書いていたときに編集を見たことがありませんでした。 – PiTheNumber

5

はい、MozillaのFirefoxでCSPブロックブックマークレットを。 bug about itがあります。

しかし、あなたは私のTop News Feed bookmarkletのように、外部CSSスタイルシートにJSコードを注入することにより、この制限を回避することができますすることはありません。

外部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); 
})() 

ブックマークレットはJSコードを含むCSSファイルをロードし、このCSSでスタイル付けされた要素を追加し、要素スタイル属性とを読み取りますコード。

+5

'スタイルシート 'https:// /bookmarklet.css'を読み込むのが拒否されました。これは、次のコンテンツセキュリティポリシーの指示に違反しているためです:" style-src 'self' 'unsafe-inline' 'unsafe-eval' assets-cdn.github .com "。 – Michael

0

Greasemonkey userscript(Firefox)を使用して、この問題の回避策を作成しました。これで、すべてのCSPサイトとhttps://サイトにブックマークレットを作成できるようになりました。ブックマークレットを個別にブックマークに入れずに簡単に編集できるライブラリファイルにブックマークレットを作成できます。

参照:https://groups.google.com/d/msg/greasemonkey-users/mw61Ynw5ORc/Gl_BNUhtSq0J

+0

このメソッドは、ブックマークレットを実行できないため動作しません(bookmarklet =' unsafe-inline') – mems

関連する問題