CSP(Content-Security-Policy)内容安全策略

1.背景

1.1.同源策略

网站的安全模式源于“同源策略”,web浏览器允许第一个web页面中的脚本访问页面中的数据,但前提是两个web页面具有相同的源。此策略防止一个页面的恶意脚本通过该页面的文档访问另一个网页上的敏感数据。
规则:协议、主机、和端口号

安全风险例子:
  1. 假设你正在访问银行网站但未注销
  2. 这时候你跳转到另外一个站点
  3. 该站点注入一些恶意代码(比如:进行交易操作等)
1.2.网页安全漏洞----跨网站脚本XSS

在某些情况下,同源策略的限制性如果太强,其实是不太友好的,比如说大型网站的子域之间的数据传递,开发过程中的一些调试等;但是人类是比较聪明的,利用一些技术、从而放宽策略
但是,跨网站脚本 (XSS)攻击可通过欺骗网站提供恶意代码和计划好的内容来绕过同源政策:通过寻找将恶意脚本注入网页,攻击者可以获得对敏感页面内容,会话cookie以及浏览器代表用户维护的各种其他信息的提升访问权限。

  1. 盗号
  2. 强制发送邮件...

2.CSP内容安全策略

为了缓解很大一部分潜在的跨脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念;简单来说这一技术就是:
开发者明确告诉客户端(制定比较严格的策略和规则),哪些外部资源是可以加载和执行的 ,即使攻击者发现漏洞,但是它是没办法注入脚本的
开发人员可以使用这种工具以各种方式锁定其应用程序,降低内容注入漏洞(如跨站点脚本)的风险,并降低其应用程序执行的权限

3.怎么启用CSP?

可以通过两种方式:

  1. 一种是通过 HTTP 头信息的Content-Security-Policy的字段


    image.png
  2. 通过网页的<meta>标签

<meta http-equiv="Content-Security-Policy" content="script-src 'self'">

我们在页面引入一个cdn,但是meta的content只设置为script-src 'self'

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <meta http-equiv="Content-Security-Policy"  content="script-src 'self'"/>
    <title>Document</title>
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
</head>

那么,我们将会看到如下结果


image.png

4.如何设置选项?

举个栗子:

如果我们将meta标签的content白名单增加https://cdn.bootcss.com来源,就不会报错了

<meta http-equiv="Content-Security-Policy"  content="script-src 'self' https://cdn.bootcss.com"/>

我们已经看到了script-src如何设置,其实它同样是适用于其他资源的限制

4.1常用

1). script-src: 外部脚本
2). style-src:script-src 版的样式表
3).img-src: 用于定义可从中加载图像的来源。
4).font-src: 用于指定可提供网页字体的来源
5).media-src: 用于限制允许传输视频和音频的来源。
6).object-src: 可对 Flash 和其他插件进行控制。
7).plugin-types: 用于限制页面可以调用的插件种类。
8). child-src: 用于列出适用于工作线程和嵌入的帧内容的网址(框架)

4.2default-src

默认情况下,这些指令的适用范围很广。如果您不为某条指令(例如,font-src)设置具体的政策,则默认情况下,该指令在运行时假定您指定 * 作为有效来源(例如,您可以从任意位置加载字体,没有任何限制)。可以通过指定一个 default-src 指令替换此默认行为

<meta http-equiv="Content-Security-Policy"  content="default-src 'self'"/>

上面代码限制所有的外部资源,都只能从当前域名加载
如果同时设置某个单项限制(比如font-src)和default-src,前者会覆盖后者,即字体文件会采用font-src的值,其他资源依然采用default-src的值。

5.内联脚本被视为是有害的

如果攻击者可以注入一个 script 标记,在标记中直接包含一些恶意的负载,则浏览器将无法将它与合法内联脚本标记区分开来。您需要将 script 标记的内容移入外部文件

6.应用

参考文档+引入钉钉JSAPI

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,561评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,218评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,162评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,470评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,550评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,806评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,951评论 3 407
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,712评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,166评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,510评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,643评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,306评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,930评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,745评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,983评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,351评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,509评论 2 348

推荐阅读更多精彩内容