Google chrome 内容安全策略:如果已设置,则无法从bookmarklet加载脚本。浏览器扩展是否获得许可?

Google chrome 内容安全策略:如果已设置,则无法从bookmarklet加载脚本。浏览器扩展是否获得许可?,google-chrome,browser,safari,browser-extension,Google Chrome,Browser,Safari,Browser Extension,我正在开发浏览器自动化工具(在JS级别工作)。很明显,加载外部脚本可以被视为XSS攻击。几个月前,我可以在Github.com上运行我的脚本,只要我通过HTTPS提供js资源 但情况已不再如此,即Github已实施了一个优雅的符合标准的障碍: 我认为这是向前迈出的一大步:我们可以向客户指定,我们希望他们在我们站点的沙箱周围设置一个更安全的边界 另一方面,它使移动平台上的选项更加有限,尽管这并不完全正确,因为完全可以生成一个内置这些扩展功能的独立浏览器应用程序。不过,与浏览器扩展相比,实现起来并

我正在开发浏览器自动化工具(在JS级别工作)。很明显,加载外部脚本可以被视为XSS攻击。几个月前,我可以在Github.com上运行我的脚本,只要我通过HTTPS提供js资源

但情况已不再如此,即Github已实施了一个优雅的符合标准的障碍:

我认为这是向前迈出的一大步:我们可以向客户指定,我们希望他们在我们站点的沙箱周围设置一个更安全的边界

另一方面,它使移动平台上的选项更加有限,尽管这并不完全正确,因为完全可以生成一个内置这些扩展功能的独立浏览器应用程序。不过,与浏览器扩展相比,实现起来并不容易

是否仍然可以使用(经过代码签名和审查的)浏览器扩展来解决这个问题?这会对用户体验产生什么样的影响?我的希望是,这将是可能的设置,以便最终用户只需通过一个简短的一次性设置。对我来说,很明显,至少谷歌是这样做的,通过他们的门户发布的扩展至少是“合理”安全地分发的,我想象苹果(最终是微软)会效仿Safari和IE。我现在只对Chrome和Safari感兴趣(现在主要是Chrome)


如果事实证明,即使是扩展也受到内容安全策略的约束,那么我该如何编写一个能够可靠地为我操纵页面的扩展呢?我相当肯定这不可能,因为这将是像猴子这样的东西的死亡

哦,我只需要再多读一点(哦,Github,你太棒了):

答案是肯定的!用户配置的脚本应始终获得许可!(但我们似乎有了一个艰难的开始)


事实上,我认为社会工程在这里有着重大的机会;“在您的浏览器中安装此书签,以便在论坛中使用我们可爱的表情符号!”“哦,书签不会是病毒,对吧?”

作为一种解决方法,您可以告诉您的bookmarklet加载外部CSS样式表并插入JS代码。这绕过了CSP。看看。

你能解释一下这个页面的链接是怎么说的吗?我有一个bookmarklet向GitHub提供我的用户名和密码,但它不起作用,因为我的脚本被阻止了。链接的页面听起来像是在说我需要在GitHub服务器上做些什么,但我在GitHub服务器上没有控制登录页面的任何东西。。。是吗?这很可能是浏览器应用了比标准规定更严格的策略。是的,显然是这样,这让我很生气,因为我已经为此在水中呆了一年多。听起来你只需要找到一个密码管理器扩展。我当时的印象是,有很多这样的系统,而且很多系统都工作得很好。虽然我自己不使用它们,但它的风险可能比自己使用要小。您知道这是一个漏洞还是一个仍然可以防止恶意代码执行的解决方法吗?(事实上,仔细想想,也许这并不重要。如果你制作了一个书签,让你为它所做的事情负责)@StevenLu,这不是一个漏洞。声明明确指出:强制执行CSP策略不应干扰用户提供的脚本(如第三方用户代理插件和JavaScript书签)的操作。