firefox - Firefox 是违反内容安全策略的Chrome?

  显示原文与译文双语对照的内容

我已经为 Chrome 和 Firefox 做了一个浏览器扩展。 Firefox 一是使用 Web扩展api开发的,因此这两个扩展中的代码差异最小。 作为扩展的一个重要特性,一些HTML元素通过内容脚本成为网页的一部分。 也包括装载在某些服务器上托管的映像并通过https服务。 现在,当扩展运行在 Twitter 和github之上时,这些图像在 Chrome 中加载得很好。 但是,有趣的是,当相应的扩展在 Twitter 和github上运行时,图像并没有在 Firefox 中加载。 更有趣的是,Twitter 在它的响应 header 中设置的content-script-policy禁止图像加载,因此 Firefox 运行正常。 所以我的问题是 Chrome 在这里违反了 CSP?

正在附加 Twitter的csp设置-

script-src 'nonce-j0GK1zjoBy82/ZWhR7gw+g== ' https://connect.facebook.nethttps://cm.g.doubleclick.nethttps://ssl.google-analytics.comhttps://graph.facebook.comhttps://twitter.com 'unsafe-eval 'https://.twimg.com https://api.twitter.comhttps://analytics.twitter.comhttps://publish.twitter.comhttps://ton.twitter.comhttps://syndication.twitter.comhttps://www.google.comhttps://t.tellapart.comhttps://platform.twitter.comhttps://www.google-analytics.com 'self'; frame-ancestors 'self'; font-src https://twitter.com https://. twimg.com data : media media media media media media media media media https://:: ; ' self'; connect-src https://graph.facebook.com https://.giphy.com https://.twimg.com https://pay.twitter.comhttps://analytics.twitter.comhttps://media.riffsy.comhttps://upload.twitter.comhttps://api.mapbox.com 'self'; style-src https://fonts.googleapis.comhttps://twitter.com https://. twimg.com https://translate.googleapis.comhttps://ton.twitter.com 'unsafe-inline ' https://platform.twitter.comhttps://maxcdn.bootstrapcdn.comhttps://netdna.bootstrapcdn.com 'self'; object-src https://twitter.comhttps://pbs.twimg.com ; default-src 'self'; frame-src https://staticxx.facebook.comhttps://twitter.com https://. twimg.com https://player.vimeo.comhttps://pay.twitter.comhttps://www.facebook.comhttps://ton.twitter.comhttps://syndication.twitter.comhttps://vine.co twitter : https://www.youtube.com https://donate.twitter.com https://data data data .fbcdn.nethttps://syndication.twitter.comhttps://media.riffsy.com:::::: ;self ;报表 uri https://twitter.com/i/csp_report?a=NVQWGYLXFVZXO2LGOQ%3D%3D%3D%3D%3D%3D&ro=false

请注意"img-src"在这里。 另一个问题是扩展也有它自己的content-script-policy在清单文件中指定。 这两个策略是如何一起发挥作用的?

时间: 原作者:

如果扩展真的想要,但是如果没有这样的响应头,那么扩展可以覆盖页面。

我最近对扩展插件中的 CSP进行了一个回答,并将在这里部分复制它:

在扩展中有 3个 csp:

  • content_security_policy 指令仅适用于自己的扩展页( 例如背景页) 。 如果未指定,则默认为 script-src 'self'; object-src 'self' 并且对如何修改它有一些限制。

  • 内容脚本上下文不可用,但在这里CSP中不受支持。 unsafe-eval 是不受限制的 ( 因为你可以用任意代码来做 executeScript ),但是内联脚本和远程脚本限制仅适用于内容脚本,因为:

  • 如果页面的DOM在页面的上下文中执行,它本身就会被执行,并且受页面本身的的CSP 。 有一个例外就是注入一个 <script>/* code */</script> 在页面中,将绕过内联代码限制( 例如立即执行 。

请注意,所有这些都包含脚本 。 我不确定这些图像是否受到。 我不知道什么文件。

注意一般的扩展可以覆盖一些网络安全特性,例如 CORS 。

原作者:
...