资讯专栏INFORMATION COLUMN

Content Security Policy减少劫持

reclay / 1869人阅读

摘要:减少劫持什么是是由单词的首单词组成,是带给我们的一套全新主动防御的体系,旨在减少注意这里是减少而不是消灭跨站脚本攻击。通过协定,让处于一个安全的运行环境中。允许等的执行。两版的支持状态可以在中查到。

Content Security Policy减少劫持 什么是CSP?

CSP是由单词 Content Security Policy 的首单词组成,是HTML5带给我们的一套全新主动防御的体系,旨在减少(注意这里是减少而不是消灭)跨站脚本攻击。
CSP是一种由开发者定义的安全性政策性申明,通过CSP所约束的的规责指定可信的内容来源(这里的内容可以指脚本、图片、iframe、fton、style等等可能的远程的资源)。通过CSP协定,让WEB处于一个安全的运行环境中。

白名单

CSP定义了 Content-Security-Policy HTTP头来为你的内容创建一个来源的白名单。浏览器只允许白名单域里的资源和代码执行。这样就算攻击者找到了一个漏洞注入脚本,脚本不在白名单里面照样无法执行。
举例说明:
我们信任m.58.com的代码,我们可以这样定义我们的协议
Content-Security-Policy: script-src "self" http://m.58.com
script-src控制script标签相关的策略,我们指定了"self"和http://m.58.com作为他的值,浏览器只会下载并执行本域和http://m.58.com的脚本。
更多指令介绍:

connect-src
限制使用XHR,WebSockets,和EventSource的连接源。

font-src
指定字体的下载源。

frame-src
指定frame可以嵌入的连接源。

img-src
指定图片的加载源。

media-src
指定video和audio的数据源。

object-src
指定Flash和其他插件的连接源。

style-src
指定link的连接源。和script-src类似。

默认如果你不指定这些指令的值,将允许所有的来源,例如 font-src:*和不写font-src是等价的。
当然你也可以重写默认值,只要使用default-src就可以。比如:指定了default-src:https://example.com 但是没有指定font-src,那么你的font-src也只能从https://example.com加载。在之前的例子中我们只指定了script-src,这说明我们可以从任何其他的地方加载image,font和其他资源。
你可以为你的web应用指定多个或者一个指令,只需要在HTTP头里面列出来这些值,不同的值之间用“;”来分隔。但是如果你写成 script-src https://host1.com;script-src:https://host2.com,那么第二个script-src将不起作用,正确的写法是:script-src https://host1.com https://host2.com 。
再举一个例子:如果你的静态资源全都来自一个CDN,并且你知道不会有frame和其他插件。你可以这样写
Content-Security-Policy:default-src https://cdn.example.net;frame-src "none";object-src:"none"
关键词:

"none"
什么都不匹配。

"self"
匹配当前的域,不包括子域。

"unsafe-inline"
允许inline JavaScript 和 CSS。

"unsafe-eval"
允许 eval,new Function等的执行。

这几个关键词需要用单引号引用起来,如果不引用,则会被认为是域名。

详细内容参考:http://content-security-policy.com/

使用示例

使用CSP时,Web应用可以通过提供一个Content-Security-Policy HTTP头或一个META的HTML元素.不过这样的政策只在当前文档适用而已。
META使用示例:

chrome里查看页面用到哪些域名:

浏览器兼容性

CSP 目前有两版:CSP1和CSP2(有些指令是属于CSP2,比如:child-src、form-action等,详见http://content-security-policy.com/)。

两版的支持状态可以在http://caniuse.com/#search=csp
中查到。

参考资料:

http://www.zhihu.com/question/21979782
http://www.2cto.com/Article/201408/327064.html
https://imququ.com/post/content-security-policy-reference.html
https://segmentfault.com/a/1190000003852910
http://content-security-policy.com/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/59906.html

相关文章

  • 一些安全相关的HTTP header

    摘要:作用禁用浏览器的猜测行为。不允许的情况下,浏览器会模拟一个状态为的响应。可能会泄漏敏感信息作用防止中间人攻击。是网站防止攻击者利用错误签发的证书进行中间人攻击的一种安全机制,用于预防遭入侵或者其他会造成签发未授权证书的情况。1.Strict-Transport-Security HTTP Strict-Transport-Security,简称为HSTS。 作用:允许一个HTTPS网...

    EscapedDog 评论0 收藏0
  • spring security安全防护

    摘要:发现无效后,会返回一个的访问拒绝,不过可以通过配置类处理异常来定制行为。恶意用户可能提交一个有效的文件,并使用它执行攻击。默认是禁止进行嗅探的。 前言 xss攻击(跨站脚本攻击):攻击者在页面里插入恶意脚本代码,用户浏览该页面时,脚本代码就会执行,达到攻击者的目的。原理就是:攻击者对含有漏洞的服务器注入恶意代码,引诱用户浏览受到攻击的服务器,并打开相关页面,执行恶意代码。xss攻击方式...

    tuantuan 评论0 收藏0
  • 前端必须知道的 HTTP 安全头配置

    摘要:在本文中,我将介绍常用的安全头信息设置,并给出一个示例。响应头指定了该响应的资源是否被允许与给定的共享。示例指定可以送达的域名,默认为当前域名不包含子域名只有在协议时才会被发送到服务端。 在本文中,我将介绍常用的安全头信息设置,并给出一个示例。在本文的最后,我将介绍用于常见应用程序和web服务器的安全头信息示例设置。 Content-Security-Policy 内容安全策略(CSP...

    shadajin 评论0 收藏0
  • 前端必须知道的 HTTP 安全头配置

    摘要:在本文中,我将介绍常用的安全头信息设置,并给出一个示例。响应头指定了该响应的资源是否被允许与给定的共享。示例指定可以送达的域名,默认为当前域名不包含子域名只有在协议时才会被发送到服务端。 在本文中,我将介绍常用的安全头信息设置,并给出一个示例。在本文的最后,我将介绍用于常见应用程序和web服务器的安全头信息示例设置。 Content-Security-Policy 内容安全策略(CSP...

    OnlyMyRailgun 评论0 收藏0
  • 75CDN 增加 SRI 支持

    摘要:近期我们增加了的支持,作为国内首个提供服务的静态资源库了,也算是为一周年庆生吧。支持两种方式开启显示在上增加临时开启当前模块的支持,例如。在控制台中执行永久开启全站模块的支持,设置为则可以关闭。 showImg(https://segmentfault.com/img/remote/1460000011996504?w=1024&h=600); 75CDN 是一个由奇舞团维护的静态资源...

    Nekron 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<