在你的网站上应用内容安全策略

阅读量96031

|

发布时间 : 2015-09-18 16:02:31

x
译文声明

本文是翻译文章,文章来源:默白@360安全播报

原文地址:https://www.moses.io/2015/09/implementing-content-security-policy-on-your-site/

译文仅供参考,具体内容表达以及含义原文为准。

http://p1.qhimg.com/t012baac58fe16cfaaf.jpg

        我总是告诉我的学生,如果他们将在那里做任何类型的Web应用程序渗透测试,他们应该要先考虑的是运行自己的网络服务器。为了能够运行,我疯狂地选择了WordPress。我之所以这样说,是因为我意识到,我冒着曝光的高风险运行着WordPress。我会写未来有关此方面的文章,主要是因为我仍然积极地进行着SANS642和SAN542的教学。

        从安全的角度来看,精神体操必须通过服务器运行之后才会完美,此Web服务器证明了这一点。实用主义也是有其代价的。有些成本也包括了CSP,或者应该称之为内容安全策略更好。实话说,如果你不愿意实现对接,CSP就是对接实现一个巨大的痛苦。你可以用它来回报你自己,但当你在这个岗位上,它并不会表现得很完美。

        我目前使用的流行的工具有:NGINX,WordPress,新的文物,谷歌Analytics(分析),谷歌广告词,Gravatar,脸谱等。CSP必须将这些都考虑在内。


CSP目前的头文件


    如果你认为这头文件已经交付给你了,我在这里透露的就是秘密。

    让我们通过其中的一些来看看,并考虑一下威胁模型。默认的SRC指令让我们知道如何利用JavaScript的默认来源。在这里,我们自己只是'白名单'。

default-src 'self';

        接下来是脚本SRC指令,是在告诉浏览器正在加载JavaScript是安全的。它能保护我们免受攻击,这真的很神奇。下面是白名单的新遗物,其中一个例子包括了nr-data.com来源的。更可怕的是*.wp.com*.gravatar.com和一些网站可能不会控制主机用户的数据但其子域却经常变化。

script-src 'self' 'unsafe-inline' 'unsafe-eval' https://js-agent.newrelic.com https://*.nr-data.net https://*.wp.com  https://*.gravatar.com https://*.wp.com https://pagead2.googlesyndication.com https://ssl.google-analytics.com https://connect.facebook.net https://www.google-analytics.com https://cdnjs.cloudflare.com https://ajax.cloudflare.com;

接下来的指令是“IMG-SRC”,这是在告诉浏览器加载的图片是安全的。出于某种原因,WordPress使用*.w.org和*.wp.com的链接的时间缩短了。

img-src 'self' data: https://wordpress.org https://*.w.org https://*.gravatar.com https://*.wp.com https://ssl.google-analytics.com https://s-static.ak.facebook.com https://www.google-analytics.com;

Style-src是我们的样式表,这里要注意些东西。

style-src 'self' 'unsafe-inline' https://*.wp.com https://*.gravatar.com https://fonts.googleapis.com;

字体来源是我们在这个网站上的网页字体,你有时还可以在这里发现adobe。

font-src 'self' data: https://fonts.gstatic.com https://themes.googleusercontent.com;

SRC的框架让我们知道它是安全的负荷框架,虽然网站只有Facebook,双击和*.wp.com被使用。

frame-src 'self' https://*.wp.com https://*.doubleclick.net https://www.facebook.com https://s-static.ak.facebook.com;

Object-src是针对对象的,但在这里没有提到对象。

object-src 'none'";

CSP的挑战

是的,你可能会发现更大的挑战是:你可能会发现,你的经验和你的用户的经验可能是完全不同的。因为你所发现的错误,如果要让用户看到,可能是相当困难的。那些部分推特网安全团队的人,他们非常善良友好,他们在推特网上联系了我(@ NDM)。我不太确定,自从他为推特工作,他是否会担心自己的三封信推特处理,因为他在推特的工作,但他非常友好,他写信联系我,并且给了我一些链接。

现在的作品正在Git Hub上更新。

http://p3.qhimg.com/t01a68b7ca2842f47c0.jpg

        他提到,他用两个工具,一个谷歌浏览器插件CASPR和Report-URI.io。我认为这两个工具是令人惊讶的。 Report-URI.io让您发送错误事件,以便以后系统进行特定的分析。

report-uri https://report-uri.io/report/<key>;

为什么这个有价值?似乎每一天我都在寻找我需要的白名单,我没有考虑到系统的新领域。

Github的要点已被更新,Twitter也已经被更新,其中包括Twitter的短代码。

 

需要注意的链接:

这里有提供许多的帮助的人和一些有用的链接。

https://blog.twitter.com/2013/csp-to-the-rescue-leveraging-the-browser-for-security

https://report-ui.io

https://dev.twitter.com/web/overview/widgets-webpage-properties

https://developer.mozilla.org/en-US/docs/Web/Security/CSP

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy

本文翻译自默白@360安全播报 原文链接。如若转载请注明出处。
分享到:微信
+10赞
收藏
默白
分享到:微信

发表评论

内容需知
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 三六零数字安全科技集团有限公司 安全客 All Rights Reserved 京ICP备08010314号-66