阻止来自允许的URL的脚本

时间:2018-05-17 14:33:31

标签: http2 content-security-policy

1。摘要

我无法在Content-Security-Policy中找到,我如何阻止URL中的脚本。

2。限制

我有一个静态网站。如果JavaScript的任何解决方案包括JQuery和/或任何其他库,那将是很好的;但不是动态网站的解决方案。

3。目标

我在网站中加入了第三方框架,视频,小工具等,其中包括分析脚本。我不希望跟踪我网站的访问者。我想阻止请求。

我网站的访问者可以安装some browser extension,以防止在线跟踪。但是会跟踪没有浏览器扩展的用户。

如果网站访问者没有任何阻止工具,我无法找到如何阻止在我的网站上进行在线跟踪。

更多详情here

4。实施例

我将Streamable视频添加到HTML:

{{1}}

5。重现的步骤

我在Firefox中禁用所有广告和跟踪拦截器以获取演示页面→我打开Firefox本机控制台。

6。预期的行为

7。实际行为

8。没帮忙

  1. Google,Stack Overflow搜索
  2. 我尝试阅读文档:

  3. Do Not Track指令:

1 个答案:

答案 0 :(得分:1)

iframe加载完全独立的文档,如果允许加载,则不受该顶级页面的CSP约束。

因此,您拥有实现CSP的顶级页面。然后它会在iframe中加载另一个页面。允许将该页面加载为顶级页面的iframe,因为顶级CSP允许加载该域。

然后单独加载iframed页面。它上面没有CSP,因此可以自由加载任何内容 - 包括该页面上引用的分析。

您可以使用sandbox attribute of the iframe获得所需的一些内容 - 但它有点受限:例如,不可能允许某些脚本而不允许其他脚本。并且可以使用图像进行跟踪。

另一种选择是通过您的服务器代理第三方内容,并将CSP注入该iframed页面,然后让您的顶级页面加载该更改的页面。例如:

 <iframe src="https://example.com?pagetoload=streamable.com/s/aqg9y/uknjqm" frameborder="0" width="100%" height="100%" allowfullscreen></iframe>

通过HTTP标头而不是元标记应用CSP也会更容易,因此您甚至不需要更改可流式页面返回的HTML。

请注意,拥有一个完全开放的代理,可以加载任何页面可能导致许多其他安全问题,包括但不限于:

以及许多其他类似问题......