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

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

时间:2014-04-21 11:27来源:TuZhiJiaMi企业信息安全专家 点击:
七 CSP阐发陈述 对网站治理员来讲CSP的一个强大年夜功能是它可以产生试图报复打击你网站的阐发陈述。你可以用report-uri指令使浏览器发送HTTP POST要求把报复打击陈述以JSON格局传送到你指定的
Tags应用安全(1006)安全策略(98)CSP(4)浏览器安全(8)  

  七 CSP阐发陈述

  对网站治理员来讲CSP的一个强大年夜功能是它可以产生试图报复打击你网站的阐发陈述。你可以用report-uri指令使浏览器发送HTTP POST要求把报复打击陈述以JSON格局传送到你指定的地址。接下来给大年夜家介绍你的站点若何建设来领受报复打击陈述。

  1. 启用陈述

  默许环境下,背规陈述不会发送。为了能利用背规陈述,你必需利用report-uri指令,并起码供给一个领受地址。

  Content-Security-Policy: default-src self; report-uri

  http://reportcollector.example.com/collector.cgi

  假定想让浏览器只报告请示陈述,不禁止任何内容,可以改用Content-Security-Policy-Report-Only头。

  2.背规陈述语法

  该陈述JSON对象包含以下数据:

  blocked-uri:被禁止的背规资本

  document-uri:反对背规行动产生的页面

  original-policy:Content-Security-Policy头策略的所有内容

  referrer:页面的referrer

  status-code:HTTP响应状况

  violated-directive:背规的指令

  3.背规陈述例子

  http://example.com/signup.html 中CSP 划定只能加载cdn.example.com的CSS样式。

  Content-Security-Policy: default-src 'none'; style-src

  cdn.example.com; report-uri /test/csp-report.php

  signup.html中的代码近似与如许:

  ... Content ...

  你能从上面的代码找犯弊端吗?策略是只承诺加载cdn.example.com中的CSS样式。但signup.html试图加载本身域的style.css样式。如许背反了策略,浏览器会向

  http://example.com/test/csp-report.php 发送POST要求提交陈述,发送格局为JSON格局。

  {

  "csp-report": {

  "document-uri": "http://example.com/signup.html",

  "referrer": "",

  "blocked-uri": "http://example.com/css/style.css",

  "violated-directive": "style-src cdn.example.com",

  "original-policy": "default-src 'none'; style-src cdn.example.com; report-uri /_/csp-reports",

  }

  }

  你从上面可以看到blocked-uri给出了具体的阻断地址http://example.com/css/style.css,但也其实不是每次都是如许。好比试图从http://anothercdn.example.com/stylesheet.css 加载CSS样式时,浏览器将不会传送完全的路径,只会给出http://anothercdn.example.com/这个地址。如许做是为了不泄漏跨域的敏感信息。

  办事端csp-report.php代码可以如许写:

  $file = fopen('csp-report.txt', 'a');

  $json = file_get_contents('php://input');

  $csp = json_decode($json, true);

  foreach ($csp['csp-report'] as $key => $val) {

  fwrite($file, $key . ': ' . $val . "

  ");

  }

  fwrite($file, 'End of report.' . "

  ");

  fclose($file);

  ?>

  八 CSP的利用率统计

  CSP的全球范围利用率很是低,并且增加的也很是迟缓。按照Veracode在2013年11月给出的陈述指出,全球前1000000网站中独一269个网站利用了W3C规范的CSP策略头Content-Security-Policy。584个网站在利用X-Content-Security-Policy策略头和487个网站在利用X-Webkit-CSP策略头,这两个和谈头已被烧毁,但还没有被禁用。

  而利用Content-Security-Policy-Report-Only进行伶仃领受报复打击陈述的网站只有24个。而统计中也指出,发现大年夜量网站利用unsafe-inline这个指令,阐发其启事多是因为开辟人员很难在页面中完全消弭内联脚本,这很让人掉看,所有只能要求拟定的CSP策略加倍严谨。

  浏览器安然策略说以内容安然策略CSPhttp://blog.veracode.com/2013/11/security-headers-on-the-top-1000000-websites-november-2013-report/

  对国内网站利用CSP的环境,笔者拜托ZoomEye对此进行了统计。2014年2月发来的统计成果在很是不乐不雅。按照ZoomEye的统计:国内排名前7000的域名没有益用CSP,国内1千万的域名(含子域名)中发现7个利用了CSP策略,此中还有3个网站CSP语法利用弊端。7个网站中3个网站是知乎,知乎网站值得表扬。

  列表以下:

  www.zhihu.com

  www.zhi.hu

  zhimg.com

  www.applysquare.com

  www.pipapai.com CSP语法弊端

  www.icyprus.cn CSP语法弊端

  www.uyitec.cn CSP语法弊端

  在网站安然防御方面,我们还要有很长的路要走。当然CSP安然策略头只是网站安然整体防御中的一小部门,但合理的操纵仍是可以起到很好的防护感化。但是在我们阐发的百万网站中,CSP的利用率是极其的低,从这一点来讲CSP在国内就应当遍及的给网站治理员进行科普。

  九 CSP Bypass

  一个安然策略从出世开端将会时不时的有一个叫“Bypass”的小火伴跟从摆布。而从辩证角度来讲,多加载一种安然策略,就多了一种Bypass的维度。一旦Bypass呈现,就意味着将有一种设计者没有考虑到的编制或技能,将粉碎策略的原有法则。

  CSP也亦是如斯,在一次次被绕过然后在一次次修复过程中,来完美本身的语法和指令。

  1.bypass AngularJS系列绕过

  AngularJS是为数不多的撑持CSP模式的MVC框架,在夙起版本中可以机关多种编制绕过CSP防御。

  CSP Bypasses with AngularJS 1.0.8 and 1.1.5

  例如:XSS via Click & Hover (ng-click & ng-mou搜刮引擎优化ver attribute)

  header('X-Content-Security-Policy: default-src 'self' ajax.谷歌apis.com');

  header('Content-Security-Policy: default-src 'self' ajax.谷歌apis.com');

  header('X-Webkit-CSP: default-src 'self' ajax.谷歌apis.com');

  header('Set-Cookie: abc=123');

  ?>

  Click me

  Hover me

  更多的可以看https://code.谷歌.com/p/mustache-security/wiki/AngularJS

  2.策略优先级绕过

  在浏览器的呵护策略中,有良多是反复的。好比A策略可以抵抗C报复打击,B策略也能够抵抗C报复打击。此处的抵抗可所以阻断也能够是放行。因而当AB同时感化于C报复打击上时,Bypass便可能产生。

  (1)Iframe sandbox 和 CSP sandbox

  当iframe sandbox承诺履行JS,而CSP不承诺履行JS,标题问题就产生了,CSP就被bypass了。

  //evil.com

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

推荐内容