移动安全 安全管理 应用案例 网络威胁 系统安全应用安全 数据安全 云安全
当前位置: 主页 > 信息安全 > 应用安全 >

浏览器安然策略说以内容安然策略CSP(一)

时间:2014-04-21 11:27来源:TuZhiJiaMi企业信息安全专家 点击:
2013年11月Veracode给出的陈述指出,全球前1000000网站中独一269个网站利用了W3C规范的CSP策略头Content-Security-Policy。而在2014年2月ZoomEye给出的测试陈述中,国内排名前7000的域名没有益用CSP,国内1千
Tags应用安全(1006)安全策略(98)CSP(4)浏览器安全(8)  

  2013年11月Veracode给出的陈述指出,全球前1000000网站中独一269个网站利用了W3C规范的CSP策略头Content-Security-Policy。而在2014年2月ZoomEye给出的测试陈述中,国内排名前7000的域名没有益用CSP,国内1千万的域名(含子域名)中仅发现7个利用了CSP策略,此中还有3个网站CSP语法利用弊端。

  假定说CSP是一个伟大年夜的安然策略,为何全球范围内网站利用率如斯之低?是CSP本身的设计存在标题问题,仍是网站治理员们没有往充分体味和操纵它。CSP事实是一个甚么样的安然策略,是像人们遍及说的它是XSS报复打击的终结者吗?

  带着以上的疑问,本文将从CSP的概念、成长时候轴、语法利用、若何准确摆设CSP、CSP的自有特点、若何操纵CSP产生报复打击陈述、CSP当前利用率、Bypass CSP等浩繁方面,来给大年夜家周全介绍CSP这个伟大年夜而又被忽视的安然策略。

  一 CSP概念

  内容安然策略(Content Security Policy,简称CSP)是一种以可托白名单作机制,来限制网站中是不是可以包含某来历内容。默许建设下不承诺履行内联代码(

  2. 2内联事务。

  

  

  3. 3 内联样式

  

  当然CSP中已对script-src和style-src供给了利用”unsafe-inline”指令来开启履行内联代码,但为了安然起见仍是慎用”unsafe-inline”。

  B.EVAL相干功能被禁用

  用户输进字符串,然后颠末eval()等函数转义进而被当作脚本往履行。如许的报复打击编制比较常见。因而乎CSP默许建设下,eval() , newFunction() , setTimeout([string], ...) 和setInterval([string], ...) 都被避免运行。

  好比:

  alert(eval("foo.bar.baz"));

  window.setTimeout("alert('hi')", 10);

  window.setInterval("alert('hi')", 10);

  new Function("return foo.bar.baz");

  假定想履行可以把字符串转换为内联函数往履行。

  alert(foo && foo.bar && foo.bar.baz);

  window.setTimeout(function() { alert('hi'); }, 10);

  window.setInterval(function() { alert('hi'); }, 10);

  function() { return foo && foo.bar && foo.bar.baz };

  一样CSP也供给了”unsafe-eval”往开启履行eval()等函数,但强烈不建议往利用”unsafe-eval”这个指令。

  五 CSP例子

  例子1

  网站治理员想要所有的内容均来自网站本身的域,不包含子域

  Content-Security-Policy: default-src 'self‘

  例子2

  网站治理员想要所有的内容来自网站本身的域,还有其他子域的内容

  Content-Security-Policy: default-src 'self' *.mydomain.com

  例子3

  网站治理员想要网站接管信赖肆意域的图象,指定域的音频视频和指定域的脚本。

  Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com

  在这条策略中,默许环境下,网站只承诺加载本身域的内容。

  但也有例外:

  img-src * 利用*通配符可以加载肆意域的图片。

  media-src media1.com media2.com 视频音频只承诺加载这两个域的

  script-src userscripts.example.com 脚本只能加载

  userscripts.example.com域的

  例子4

  网站治理员确保在线银行所有内容都经由过程SSL加载,确保信息不会被截获。

  Content-Security-Policy: default-src https://onlinebanking.jumbobank.com

  例子5

  看github.com的真实CSP例子。Github承诺加载任何域的内容,但只能加载指定域的脚本,只能加载指定域的样式并可以履行内联样式,只能经由过程SSL加载指定域的flash插件。

  Content-Security-Policy:default-src *;

  script-src 'self'

  https://github.global.ssl.fastly.net https://ssl.谷歌-analytics.com

  https://collector-cdn.github.com https://embed.github.com

  https://raw.github.com;

  style-src 'self' 'unsafe-inline'

  https://github.global.ssl.fastly.net;

  object-src https://github.global.ssl.fastly.net

  在线CSP编写,可以协助和帮忙网站治理员编写出合适本身站点的CSP。http://cspisawesome.com/

浏览器安然策略说以内容安然策略CSP

  六 CSP的弊端利用

  CSP的语法和指令其实不复杂,但假定没有充分体味网站营业和安然需求,弊端的利用CSP则会拔苗助长。

  (1)笔者在2013年底拜候http://www.grosshandel-hahn.de/,发现CSP策略较着利用弊端。

浏览器安然策略说以内容安然策略CSP

  可以看到利用X-Content-Security-Policy-Report-Only。此头的意思是让浏览器只报告请示日记,不禁止任何内容。但这条策略里却没有给出领受信息日记的地址。

  (2)Content-Security-Policy: default-src https:; frame-src test.com;。这个策略方案是有标题问题标,此头限制https以外的所有资本,但又承诺iframe经由过程http进行加载。实际中,如许的场景应当很难呈现。

------分隔线----------------------------

推荐内容