使用内容安全策略缓解攻击

Firefox 对 内容安全策略 (CSP) 的支持已经 成为新闻,并且 现在可以在测试版本中使用,供 Web 开发人员试用。CSP 的支持不打算在 Firefox 3.6 中发布,但很可能包含在 3.6 之后版本(最有可能称为 3.7)中。

这篇文章针对 Web 开发人员,简要概述了 CSP 有助于缓解的三种攻击类型,并提供了一些简单的示例,以便开发人员了解其工作原理。

如果您不知道我们的内容安全策略代码是什么——根据轶事证据,很多人不知道——它是一套易于使用的工具,允许网站所有者告知浏览器应该或不应该从哪里加载资源。它特别旨在防止我们今天在网络上看到的三个不同类别 的常见攻击:跨站点脚本攻击点击劫持 和 数据包嗅探攻击。

跨站点脚本攻击主要是由于后端 Web 服务器上的错误造成的,在这些错误中,有人未能对用户提交的数据进行转义。发生这种情况时,可能会注入一个标签以从另一个网站加载 JavaScript 代码。该代码可能是无害的,但也可能包含一些危险的内容,例如恶意软件。CSP 的作用是允许网站作者通过 HTTP 标头指定可以加载哪些类型的脚本以及从哪里加载。对于设置策略的开发人员来说,它增加了一层保护,即使他们犯了错误,也可能通过这一额外的策略层来缓解。

点击劫持攻击是指有人将一个页面嵌入到一个透明的 iframe 中,并“窃取”用户点击以激活某些危险内容。一项特别的攻击允许浏览器 被变成远程监控设备。CSP 包含页面告知浏览器它永远不想被嵌入到 iframe 中的功能。

最后,网站可以告知浏览器它永远不想从该页面加载未加密的 HTTP 资源。银行和其他商业网站会发现这特别有用。

CSP 非常强大且灵活,它允许您指定是否要加载不同类型的媒体、不同类型的脚本方法、CSS,可用于设置仅从特定其他主机加载,以及许多其他功能。它旨在为简单情况设置非常容易,但可以扩展到相当复杂的架构,其中不同的资源可能分散在大量机器上。

以下列出了四个示例,展示了常见用例。每个示例都是一个通过 HTTP 标头传递的标头,它会影响页面的呈现方式。

某个网站希望其所有内容都来自其自己的域名

X-Content-Security-Policy: allow 'self'

示例 2:拍卖网站希望能够从任何地方加载图像,从受信任的媒体提供商和 CDN 网络加载插件内容,以及仅从其服务器托管的经过消毒的 JavaScript 加载脚本

X-Content-Security-Policy: allow 'self'; img-src *; 
                           object-src media1.com media2.com *.cdn.com; 
                           script-src trustedscripts.example.com

示例 3:服务器管理员希望拒绝该网站的所有第三方脚本,并且某个项目组也希望禁止来自其他网站的媒体(由系统管理员提供的标头和由项目组提供的标头都存在)

X-Content-Security-Policy: allow *; script-src 'self'
X-Content-Security-Policy: allow *; script-src 'self'; media-src 'self';

示例 4:在线支付网站希望确保其页面中的所有内容都通过 SSL 加载,以防止攻击者窃听对不安全内容的请求

X-Content-Security-Policy: allow https://*:443

实施工作尚未完全完成,但已经非常接近了。在 CSP 的 演示页面 上有更多信息,阅读 概述 或阅读 规范本身


5 条评论

  1. jaredzusmc

    感谢这些信息。真的很喜欢基本攻击的定义。我习惯了这些术语,但并非所有人都习惯。
    我不是要“攻击”,只是想查看这里的转义参数
    谷歌
    谷歌

    再次感谢内幕消息,

    J.

    2009 年 10 月 6 日 下午 2:51

  2. jaredzusmc

    非常棒……简单的 Google URL 可以正常工作,但嵌入的 JavaScript 显然不行。

    我相信这只是一个转义机制,而不是真正的 CSP。

    J.

    2009 年 10 月 6 日 下午 2:53

  3. Rayj

    我就是不明白为什么我阻止了 Mozilla 的这个该死的弹出窗口,它还是不断弹出我永远不会购买的垃圾。如果你们能去掉这些垃圾,我将不胜感激!我真是被这些该死的弹出窗口气坏了,它们都是一些没人想要的垃圾,只是为了让你们赚更多钱。

    2009 年 10 月 8 日 下午 4:40

  4. […] 通过画布和 WebGL 进行原始图形处理,原生视频,高级 XHR 功能与新的安全工具和网络功能相结合 […]

    2009 年 11 月 8 日 下午 9:51

  5. […] 在过去的五年中,显而易见的变化之一是,众多现代浏览器(Firefox、Safari、Opera 和 Chrome)与世界上最流行的浏览器(IE)在各个方面的巨大差异。现代浏览器是为了未来那些互联网应用构建的——超级快速的 JavaScript,现代 CSS,HTML5,支持多种互联网应用标准,支持可下载字体,支持离线应用,通过 canvas 和 WebGL 支持原生图像处理,原生视频支持,高级 XHR 支持兼具高级安全工具和网络能力。 […]

    2009 年 11 月 9 日 上午 4:32

本文的评论已关闭。