回答
截至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. 与内容安全策略
- 3. AWS内容安全策略
- 4. 使用内容安全策略阻止Internet Explorer 11上的内联JavaScript
- 5. 内容安全策略+表格插件
- 6. iFrame中webapp的内容安全策略
- 7. MVC Ajax.BeginForm和内容安全策略
- 8. 内容安全策略警告
- 9. 禁用内容安全策略
- 10. 内容安全策略停用
- 11. 带内容安全策略的reCAPTCHA
- 12. 内容安全策略错误?
- 13. Chrome扩展内容安全策略
- 14. 内容安全,策略+帧祖先
- 15. Owncloud javascript内容安全策略问题
- 16. 内容安全策略未运行.htaccess
- 17. ASP.NET WebForms中的内容安全策略
- 18. 内容安全策略错误
- 19. 内容安全策略和mod_pagespeed evals
- 20. Safari内容安全策略支持
- 21. WordPress的内容安全策略
- 22. Flash安全策略:是否有解决方法允许阻止的IP 127.0.0.2?
- 23. 内容安全政策阻止AJAX,但该域名是有效的
- 24. 内容安全策略 - 服务器不考虑元内容
- 25. 混合内容,内容安全策略和散列源
- 26. Java安全策略阻止访问Maven资源文件
- 27. “disown-opener”内容安全策略是做什么的?
- 28. 内容安全政策Firebase
- 29. 内容安全策略允许内联样式不带不安全内联
- 30. 边缘忽略脚本-SCR在内容安全策略
只是好奇心,为什么要禁用bookmarklets? – ThiefMaster
我不只是担心其他人可能会这样做,因为他们不希望在网页上注入Javascript。 – PiTheNumber
总有像greasemonkey的东西。如果**用户**决定他想在只会影响自己的网站上注入javascript,那么阻止他这样做是没有什么权利的。 – ThiefMaster