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 条评论