在上一篇博客我们主要总结了XSS攻击,本篇博客主要总结内容安全策略CSP的相关内容。
一、定义
内容安全策略(CSP),是一种安全策略,其原理是当浏览器请求某一个网站时,告诉该浏览器申明文件可以执行,什么不可以执行。CSP是专门解决XSS攻击而生的神器。
CSP的引入会使得我们的引入扩展程序更加安全,并且可以由开发者指定可以加载扩展程序的类型,避免恶意的脚本在浏览器中执行,造成信息泄露问题。
二、CSP的意义
CSP是防XSS的利器,可以把其理解为白名单,开发者通过设置CSP的内容,来规定浏览器可以加载的资源,CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
三、CSP的分类

(1)、Content-Security-Policy:
配置好并启用后,不符合CSP的外部资源就会被阻止加载。
(2)、Content-Security-Policy-Report-Only
表示不执行限制选项,只是记录违反限制的行为。它必须与resport-uri选项配合使用

四、CSP的使用

(1)、在HTTP Header上使用(首选)
"Content-Security-Policy":策略
"Content-Security-Policy-Only":策略
(2)、在HTML上使用
<meta http-equiv="content-security-policy" content="策略">
<meta http-equiv="content-security-policy-report-only" content="策略">

Meta标签与HTTP头只是形式不同而已,但是表示的作用都是一致的,如果HTTP头与Meta定义同时存在,则优先采用HTTP中的定义
如果用户浏览器已经为当前文档执行了一个CSP的策略,则会跳过Meta标签的定义。如果Meta标签缺少content属性的时候也同样会跳过
五、策略该怎么写

//限制所有的外部资源,只能从当前域中加载。
Content-Security-policy:default-src "self"
//default-src是csp指令,多个指令之间使用;来隔离,多个指令值之间使用空格来分离。
Content-Security-policy:default-src https://host1.com https://host2.com; frame-src "none"; object-src "none"
//错误写法,这样写第二个script-src指令将会被忽略
Content-Security-Policy: script-src https://host1.com; script-src https://host2.com
//正确写法
Content-Security-Policy: script-src https://host1.com https://host2.com
//report-uri指令表示浏览器发送JSON格式的拦截报告到某一个地址。
Content-Security-Policy: default-src "self"; report-uri /my_amazing_csp_report_parser;//具体报告如下所示{  "csp-report": {  "document-uri": "http://example.org/page.html",  "referrer": "http://evil.example.com/",  "blocked-uri": "http://evil.example.com/evil.js",  "violated-directive": "script-src 'self' https://apis.google.com",  "original-policy": "script-src 'self' https://apis.google.com; report-uri http://example.org/my_amazing_csp_report_parser"  }
}

六、CSP指令
6.1、常用的CSP指令

指令 指令和指令值示例 指令说明
default-src “self” “cdn.guangzhul.com” 默认加载策略
script-src “self” “js.guangzhul.com” 对javascript的加载策略
style-src “self” “css.guangzhul.com” 对样式的加载策略
img-src “self” “img.guangzhul.com” 对图片的加载策略
content-src “self” 对ajax,websocket请求的加载策略。不允许的情况下浏览器会模拟一个状态为400的相应
font-src “font.cdn.guangzhul.com” 针对webFont的加载策略
object-src “self” 指针或标签引入flash等插件的加载策略
media-src media.cdn.guangzhul.com 针对媒体引入的HTML多媒体的加载策略
frame-src “self” 针对frame的加载策略
report-uri /report-uri 告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。 特别的:如果想让浏览器只汇报日志,不阻止任何内容,可以改用 Content-Security-Policy-Report-Only 头

6.2、其他的CSP指令

指令 指令说明
sandbox 设置沙盒环境
child-src 主要防御 frame,iframe
form-action 主要防御 form
frame-ancestors 主要防御 frame,iframe,object,embed,applet
plugin-types 主要防御 object,embed,applet

6.3、CSP指令值

指令值 指令和指令值示例 指令值说明
* img-src * 允许任何内容
“none” img-src “none” 不允许任何内容
“self” img-src “self” 允许来自相同的来源的内容(相同的协议,域名和端口)
data: img-src data: 允许data协议(如base64编码的图片)
www.guangzhul.com img-src img.guangzhul.com 允许加载指定域名下的资源
*.guangzhulcom img-src: *.guangzhul.com 允许加载guangzhul.com任何子域下面的资源
“unsafe-inline” script-src “unsafe-inline” 允许加载inline的资源 例如常见的 style 属性,onclick,inline js 和 inline css 等等
“unsafe-eval” script-src “unsafe-eval” 允许加载动态js代码,例如eval()

本篇博客主要参考:CSP

内容安全策略(CSP)详解相关推荐

  1. matlab csp详解,内容安全策略(CSP)详解

    1.背景 1.1.同源策略 网站的安全模式源于"同源策略",web浏览器允许第一个web页面中的脚本访问页面中的数据,但前提是两个web页面具有相同的源.此策略防止一个页面的恶意脚 ...

  2. [转]Flash socket通讯中的安全策略问题详解

    Flash socket通讯中的安全策略问题详解 昨天做测试的时候遇到一个问题,做好的SWF在Flash AS3中调试通过,但是发布到html中之后就无法得到数据了.查了一些资料之后找到了解决办法.这 ...

  3. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  4. 御剑情缘服务器维护,御剑情缘7月27日更新维护内容及活动详解介绍

    导 读 御剑情缘7月27日更新维护了什么内容?御剑情缘目前在7月27日为玩家们进行了游戏更新,不少小伙伴们还不清楚有哪些玩法吧!下面是御剑情缘7月27日更新维护内容及活动详解介绍,一起来看下吧! ▲燕 ...

  5. HTTP CSP详解

    HTTP CSP详解 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编程措施,非常麻烦.很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本? 这就是& ...

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

    内容安全策略(CSP),其核心思想十分简单:网站通过发送一个 CSP 头部,来告诉浏览器什么是被授权执行的与什么是需要被禁止的.其被誉为专门为解决XSS攻击而生的神器. 1.前言 内容安全策略 (CS ...

  7. JS常用的输出内容的方式详解(5种输出方式)

    1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...

  8. 【译】使用内容安全策略(CSP)加固应用

    原文: https://60devs.com/using-content-security-policy.html 内容安全策略(CSP)是一种浏览器机制,有助于阻止跨站脚本(XSS)攻击. 什么是X ...

  9. 浏览器安全策略说之内容安全策略CSP

    天融信阿尔法实验室 · 2014/04/17 14:50 目录 0x00 前言 0x01 CSP概念 0x02 CSP发展时间轴 0x03 CSP语法 0x04 CSP默认特性 0x05 CSP例子 ...

  10. android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解

    本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...

最新文章

  1. P4factory ReadMe Quickstart 安装p4factory
  2. 【 MATLAB 】使用 MATLAB 实现模拟信号的近似及其连续傅里叶变换
  3. 【EventBus】事件通信框架 ( 实现几个关键的封装类 | 消息中心 | 订阅注解 | 订阅方法封装 | 订阅对象-方法封装 | 线程模式 )
  4. Dos下cd不起作用详解...
  5. 实验4:正确的为各种属性赋值||实验7:通过abstract属性创建一个模板bean||实验8:bean之间的依赖||实验9:测试bean的作用域,分别创建单实例和多实例的bean★(测试)
  6. php lararel,laravel整合tinymce和ckeditor编辑器,并用elfinder上传图片
  7. 中两个数做减法_四年级数学下册 | 第1单元加、减法的意义和各部 分之间的关系(P13)...
  8. 通过javascript改变form提交的action,实现不同的按钮向不同的action提交同一个form的数据
  9. 垃圾软件!动不动就扣费!| 今日最佳
  10. android中画弧函数canvas.drawArc()之理解
  11. 计算机存储单位字的英语,计算机存储基本单位,位、字节、字以及KB、MB和GB怎么换算?...
  12. Google桌面搜索使用与技巧
  13. 第二周工作总结——NWNU李泓毅
  14. 计算机毕业设计ssm鹊巢大连分公司分销商管理系统51g9m系统+程序+源码+lw+远程部署
  15. 重新安装的nvidia显卡驱动
  16. [字符串题-java实现]20. 有效的括号
  17. python如何设置rgb颜色_Python 转换RGB颜色值的示例代码
  18. 《面筋:拿到美团点评和去哪儿网的offer》
  19. ARM汇编指令EQU与等号“=”的异同
  20. Transformer一文搞懂

热门文章

  1. 文献阅读1:Deep Learning for Image Super-resolution: A Survey
  2. matlab非参数检验,非参数检验及matlab实现
  3. 如何在苹果手机上进行自动化测试!!!!!可以尝试配置一下
  4. 从零开始学习CTF——CTF是什么
  5. win10计算机共享在哪,快速共享电脑文件,win10的“就近共享”功能了解一下!...
  6. 计算机培训机构年终总结范文,2020老师培训年终工作总结范文5篇
  7. Seaborn 绘图中设置字体及大小
  8. excel自动调整列宽_Knime数据分析入门- 06 自动调整Excel中列序
  9. vs2019安装时,一直卡在正在提取文件
  10. Logstash 时间转换(YYYY-MM-dd HH:mm:ss转Unix时间)