内容安全策略(CSP)详解
在上一篇博客我们主要总结了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)详解相关推荐
- matlab csp详解,内容安全策略(CSP)详解
1.背景 1.1.同源策略 网站的安全模式源于"同源策略",web浏览器允许第一个web页面中的脚本访问页面中的数据,但前提是两个web页面具有相同的源.此策略防止一个页面的恶意脚 ...
- [转]Flash socket通讯中的安全策略问题详解
Flash socket通讯中的安全策略问题详解 昨天做测试的时候遇到一个问题,做好的SWF在Flash AS3中调试通过,但是发布到html中之后就无法得到数据了.查了一些资料之后找到了解决办法.这 ...
- python修改文件内容_Python批量修改文本文件内容的方法详解
这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...
- 御剑情缘服务器维护,御剑情缘7月27日更新维护内容及活动详解介绍
导 读 御剑情缘7月27日更新维护了什么内容?御剑情缘目前在7月27日为玩家们进行了游戏更新,不少小伙伴们还不清楚有哪些玩法吧!下面是御剑情缘7月27日更新维护内容及活动详解介绍,一起来看下吧! ▲燕 ...
- HTTP CSP详解
HTTP CSP详解 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编程措施,非常麻烦.很多人提出,能不能根本上解决问题,浏览器自动禁止外部注入恶意脚本? 这就是& ...
- 内容安全策略CSP(Content-Security-Policy)
内容安全策略(CSP),其核心思想十分简单:网站通过发送一个 CSP 头部,来告诉浏览器什么是被授权执行的与什么是需要被禁止的.其被誉为专门为解决XSS攻击而生的神器. 1.前言 内容安全策略 (CS ...
- JS常用的输出内容的方式详解(5种输出方式)
1.alert("要输出的内容"); ->在浏览器中弹出一个对话框,然后把要输出的内容展示出来 ->alert都是把要输出的内容首先转换为字符串然后在输出的 2.doc ...
- 【译】使用内容安全策略(CSP)加固应用
原文: https://60devs.com/using-content-security-policy.html 内容安全策略(CSP)是一种浏览器机制,有助于阻止跨站脚本(XSS)攻击. 什么是X ...
- 浏览器安全策略说之内容安全策略CSP
天融信阿尔法实验室 · 2014/04/17 14:50 目录 0x00 前言 0x01 CSP概念 0x02 CSP发展时间轴 0x03 CSP语法 0x04 CSP默认特性 0x05 CSP例子 ...
- android 清空数组缓存,Android数据持久化之读写SD卡中内容的方法详解
本文实例讲述了Android数据持久化之读写SD卡中内容的方法.分享给大家供大家参考,具体如下: 前面文章里讲的那三个方法:openFileOutput.openFileInput虽然都能通过流对象O ...
最新文章
- P4factory ReadMe Quickstart 安装p4factory
- 【 MATLAB 】使用 MATLAB 实现模拟信号的近似及其连续傅里叶变换
- 【EventBus】事件通信框架 ( 实现几个关键的封装类 | 消息中心 | 订阅注解 | 订阅方法封装 | 订阅对象-方法封装 | 线程模式 )
- Dos下cd不起作用详解...
- 实验4:正确的为各种属性赋值||实验7:通过abstract属性创建一个模板bean||实验8:bean之间的依赖||实验9:测试bean的作用域,分别创建单实例和多实例的bean★(测试)
- php lararel,laravel整合tinymce和ckeditor编辑器,并用elfinder上传图片
- 中两个数做减法_四年级数学下册 | 第1单元加、减法的意义和各部 分之间的关系(P13)...
- 通过javascript改变form提交的action,实现不同的按钮向不同的action提交同一个form的数据
- 垃圾软件!动不动就扣费!| 今日最佳
- android中画弧函数canvas.drawArc()之理解
- 计算机存储单位字的英语,计算机存储基本单位,位、字节、字以及KB、MB和GB怎么换算?...
- Google桌面搜索使用与技巧
- 第二周工作总结——NWNU李泓毅
- 计算机毕业设计ssm鹊巢大连分公司分销商管理系统51g9m系统+程序+源码+lw+远程部署
- 重新安装的nvidia显卡驱动
- [字符串题-java实现]20. 有效的括号
- python如何设置rgb颜色_Python 转换RGB颜色值的示例代码
- 《面筋:拿到美团点评和去哪儿网的offer》
- ARM汇编指令EQU与等号“=”的异同
- Transformer一文搞懂
热门文章
- 文献阅读1:Deep Learning for Image Super-resolution: A Survey
- matlab非参数检验,非参数检验及matlab实现
- 如何在苹果手机上进行自动化测试!!!!!可以尝试配置一下
- 从零开始学习CTF——CTF是什么
- win10计算机共享在哪,快速共享电脑文件,win10的“就近共享”功能了解一下!...
- 计算机培训机构年终总结范文,2020老师培训年终工作总结范文5篇
- Seaborn 绘图中设置字体及大小
- excel自动调整列宽_Knime数据分析入门- 06 自动调整Excel中列序
- vs2019安装时,一直卡在正在提取文件
- Logstash 时间转换(YYYY-MM-dd HH:mm:ss转Unix时间)