内容安全策略研究综述
2015-03-03刘树凯颜学雄王清贤
刘树凯, 颜学雄, 王清贤, 赵 旭
(1.解放军信息工程大学; 2.数学工程与先进计算国家重点实验室, 郑州 450001)
内容安全策略研究综述
刘树凯, 颜学雄, 王清贤, 赵 旭
(1.解放军信息工程大学; 2.数学工程与先进计算国家重点实验室, 郑州 450001)
从发展历程、安全目标、实现方法、研究进展等方面对内容安全策略进行了综述,并展望了未来的主要研究方向。
内容安全策略;跨站脚本;Web应用
基于Web开发的应用系统已广泛应用于各行各业,成为人们生活工作的一部分。以HTML5为代表的新一代Web技术的快速发展,浏览器扩展、Chrome应用等的日渐流行,以及Chromium os、Mozilla boot2gecko等浏览器操作系统的引入,预示着Web应用发展新时代的到来。与此同时,Web应用面临的安全风险也前所未有,跨站脚本(Cross-Site Scripting,简称XSS)攻击就是最突出的例子。近年来,主流的Web服务(Google、Facebook和Twitter等)都曾多次遭受跨站脚本的攻击[1-3]。目前,跨站脚本攻击已经超过缓冲区溢出攻击,成为一种最猖獗的攻击方式。
内容安全策略(Content Security Policy,简称CSP)是针对跨站脚本攻击最有效的解决方案之一。它由Sterne B于2008年提出,最初的目的是创建一个无所不包的机制以消除跨站脚本等常见的Web漏洞[4]。2010年Stamm S等[5]系统阐释了CSP的基本思想和策略语言,并给出了基于FireFox的原型实现。从此,CSP的概念在全球迅速推广。
2011年3月Firefox 4.0发布,首次把CSP当作一种正式的安全策略规范应用到浏览器中。谷歌在2011年9月发布的Chrome14.0支持CSP。
2011年11月W3C在官网上发布了CSP1.0草案。2012年2月Chrome25版本发布,并宣布支持W3C的CSP1.0标准。2013年6月Firefox宣布在23版本中全面支持W3C的CSP1.0标准。IE10开始部分地支持CSP1.0[6],现在CSP1.0已得到主流浏览器的全面支持。
2013年6月,CSP1.1标准发布[7],2014年7月CSP2标准发布[8]。Chrome应用和Chrome扩展开发技术也全面支持CSP。至此,CSP已经发展成为一个非常全面的广泛使用的安全框架。
本文将分别从安全目标、方法和实现等方面系统地分析CSP安全机制,从W3C标准的演变、改进、可用性等方面介绍CSP的研究进展,并展望未来的研究方向。
1 CSP安全机制分析
1.1 安全目标
CSP是为Web应用开发者控制网站中的嵌入内容而提供的一种安全机制。其核心思想是让站点管理员可以规定关于单个页面的行为,例如,允许开发者为站点设置内容加载的规则。
设定一个站点S,CSP的目标是允许网站管理员使用一个内容加载的规则集合来控制S的行为和外观。此外,CSP保证站点S的访问者提供的信息只传送给S或者其他由S授权的站点。
具体地说,CSP的安全目标包括以下几个方面:
(1)加强跨站脚本漏洞防护。如果网站存在跨站脚本漏洞,攻击者不能加载第三方的资源,也不能向未授权的主机传送信息。同时,跨站脚本攻击发生时,注入的脚本不会被执行,并且会通知站点管理员发生了攻击。
(2)只加强安全性。确保使用CSP时不会引入新的安全问题。不为Web攻击者提供新的功能,例如不允许干扰网站的可操作性、不增加收集访问者信息的方法等。
(3)灵活易用,兼容原有的Web应用。CSP在内存和时间等方面不会导致开销的过多增加,并能够轻易地被采用。不使用CSP的Web应用可以在支持CSP的浏览器中正常运行,而使用CSP的Web应用仍然可以在不支持CSP的浏览器中工作。
1.2 基本方法
CSP在HTTP响应头中传输策略,由Web浏览器负责执行CSP策略以控制受保护的文档内容。虽然W3C规定Content-Security-Policy为标准响应头域,但Chrome浏览器和FireFox浏览器仍然分别支持X-Webkit-CSP和X-Content-Security-Policy头域。
当在一个Web页面中声明使用CSP时,则默认为禁用以下两类功能以分离内容和代码:
(1)禁用内联的JavaScript脚本,包括