回答
截至2017年,答案仍然是明確的:「也許」 - 就在這個答案最初發佈於2011年像的specification明確表示:
政策執行上的資源不應該與干擾用戶代理功能(如插件,擴展或書籤)的操作。
而且這確實是我在Chrome 61看到的行爲:一個書籤將在https://addons.mozilla.org/運行,有沒有script-src: 'unsafe-inline'
嚴格的內容安全策略的站點。然而,在Firefox 56書籤將不會運行在這個網站上,並且正在報告CSP違規。
在Firefox bug report中對此問題有很長的討論,特別是鏈接到similar discussion on the W3C spec。因此,截至目前,您不能真正依賴書籤小程序不受CSP影響。你總是可以禁用CSP,但這對你來說是一個重要的保護層。
感謝您對此進行測試!但是如果你願意,你可以簡單地切換CSP。打開about:config並將「security.csp.enable」設置爲「false」。所以你無論如何都可以運行你自己的小冊子。 – PiTheNumber
@PiTheNumber:我的答案已經表明你可以關閉CSP,並建議不要這樣做。 –
對不起,我在撰寫評論時看不到您的編輯。 – PiTheNumber
該行爲在mozillas wiki中指定。
CSP不應干擾用戶提供的腳本(如瀏覽器加載項和書籤)的操作。
看一看這裏: https://wiki.mozilla.org/Security/CSP/Specification#Non-Normative_Client-Side_Considerations
是,在Mozilla Firefox的CSP塊的bookmarklet。有一個bug about it。
但是,您可以通過注入JS代碼到外部CSS樣式表,就像我Top News Feed bookmarklet繞開這個限制作用:
外部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);
})()
bookmarklet加載一個包含JS代碼的CSS文件,添加一個由此CSS設計的元素,讀取元素樣式屬性和eval
的代碼。
'拒絕加載樣式表'https://
我已經使用Greasemonkey userscript(在Firefox中)爲此問題創建瞭解決方法「修復」。現在,您可以在所有CSP和https://網站上擁有小書籤,並且可以將書籤放在一個漂亮,易於編輯的庫文件中,而不是單獨擠壓成書籤。
請參閱:https://groups.google.com/d/msg/greasemonkey-users/mw61Ynw5ORc/Gl_BNUhtSq0J
此方法不起作用,因爲書籤不能執行(bookmarklet ='unsafe-inline') – mems
- 1. 內容安全策略和書籤
- 2. AWS內容安全策略
- 3. 與內容安全策略
- 4. 內容安全策略春季安全
- 5. 使用內容安全策略阻止Internet Explorer 11上的內聯JavaScript
- 6. 爲什麼禁止內聯腳本(內容安全策略)?
- 7. Antisamy或內容安全策略或兩者都可以阻止XSS攻擊
- 8. MVC Ajax.BeginForm和內容安全策略
- 9. 內容安全策略錯誤?
- 10. Safari內容安全策略支持
- 11. 內容安全策略 - 兒童SRC
- 12. ASP.NET WebForms中的內容安全策略
- 13. 內容安全,策略+幀祖先
- 14. iFrame中webapp的內容安全策略
- 15. 內容安全策略Internet Explorer錯誤
- 16. 內容安全策略的getJSON
- 17. IE支持的內容安全策略
- 18. 內容安全策略和mod_pagespeed evals
- 19. 內容安全策略+表格插件
- 20. Owncloud javascript內容安全策略問題
- 21. 允許所有內容安全策略?
- 22. 內容安全策略未運行.htaccess
- 23. 內容安全策略警告
- 24. 內容安全策略錯誤
- 25. 帶內容安全策略的reCAPTCHA
- 26. Chrome擴展內容安全策略
- 27. 內容安全策略停用
- 28. 內容安全策略語法的URI
- 29. Chrome擴展,從內容安全策略
- 30. Firebase + Chrome內容安全策略設置?
只是好奇心,爲什麼要禁用bookmarklets? – ThiefMaster
我不只是擔心其他人可能會這樣做,因爲他們不希望在網頁上注入Javascript。 – PiTheNumber
總有像greasemonkey的東西。如果**用戶**決定他想在只會影響自己的網站上注入javascript,那麼阻止他這樣做是沒有什麼權利的。 – ThiefMaster