Web安全之CSP
内容安全策略(Content-Security-Policy,简称CSP)
概念:
内容安全策略(CSP)是一种web应用技术用于帮助缓解大部分类型的内容注入攻击,包括XSS攻击和数据注入等,这些攻击可实现数据窃取、网站破坏和作为恶意软件分发版本等行为。该策略可让网站管理员指定客户端允许加载的各类可信任资源。
浏览器支持:

统计来源:caniuse.com/contentsecuritypolicy & Mozilla
指令参考:
Content-Security-Policy 响应头的值可配置一个或多个,多个指令以分号;隔开。
|
指令 |
示例 |
描述 |
|
default-src |
'self' cdn.example.com |
默认配置,若其他指令没有配置,都以此配置的规则为准 |
|
script-src |
'self' js.example.com |
定义允许加载的JavaScript来源 |
|
style-src |
'self' css.example.com |
定义允许加载的样式表来源 |
|
img-src |
'self' img.example.com |
定义允许加载的图片来源 |
|
connect-src |
'self' |
适用于XMLHttpRequest(AJAX),WebSocket或EventSource,当为不允许的来源,浏览器返回一个400的状态码。 |
|
font-src |
font.example.com |
定义允许加载的字体来源 |
|
object-src |
'self' |
定义允许加载的插件来源. eg,<object>,<embed>或<applet> |
|
media-src |
media.example.com |
定义允许加载的audio和video. eg,HTML5 <audio>,<video>元素 |
|
frame-src |
'self' |
定义允许加载的框架来源 |
|
sandbox |
allow-forms allow-scripts |
授权一个沙箱用来请求具有iframe sanbox等类似属性的资源,该沙箱默认为同源策略,禁止弹出窗口,执行插件和脚本.若要允许其他,可增加配置: allow-forms,allow-same-origin, allow-scripts,allow-top-navigation |
|
report-uri |
/some-report-uri |
该配置让浏览器发送一个失败报告到指定的路径,也可以增加-Report-only到HTTP头,让浏览器只发送报告(不做阻止动作) |
来源配置参考:
所有的指令都要在配置后面添加来源列表,多个来源列表可用空格隔开,*和none只能存在一个。
|
指令值 |
示例 |
描述 |
|
* |
img-src * |
无限制,允许所有 |
|
'none' |
object-src 'none' |
禁止加载任何路径的资源 |
|
'self' |
script-src 'self' |
允许加载同源的资源 |
|
data: |
img-src 'self' data: |
允许通过数据模式加载资源 |
|
domain.ccc.com |
img-src img.ccc.com |
允许加载匹配域名的资源 |
|
*.ccc.com |
img-src *.ccc.com |
允许加载匹配域名的资源 |
|
https://img.ccc.com |
img-src https://img.ccc.com |
允许加载匹配https方式的域名资源 |
|
https: |
img-src https: |
允许加载所有匹配https方式的资源 |
|
'unsafe-inline' |
script-src 'unsafe-inline' |
允许使用内联元素,类似,Style attribute,onclick,scripttag bodies |
|
'unsafe-eval' |
script-src 'unsafe-eval' |
允许不安全的动态编码,例如eval() |
例子:
只允许加载同源的所有资源
default-src 'self';
支持*号匹配
default-src 'self' https://*.ccc.com:*;
只允许加载同源的脚本
script-src 'self';
只允许加载同源的和www.ccc.com的脚本
script-src 'self' www.ccc.com;
常见配置:
该策略允许加载同源的图片、脚本、AJAX和CSS资源,并阻止加载其他任何资源,对于大多数网站是一个不错的配置。
default-src 'none'; script-src 'self'; connect-src 'self'; img-src 'self'; style-src 'self';
被禁止时的报错信息:
谷歌浏览器可通过谷歌开发工具查看该报错,通常是按F12
Refused to load the script 'script-uri' because it violates the following Content Security Policy directive: "your CSP directive".
Firefox 可通过 Web Developer Tools: 查看报错
Content Security Policy: A violation occurred for a report-only CSP policy ("An attempt to execute inline scripts has been blocked"). The behavior was allowed, and a CSP report was sent.
参考:
http://content-security-policy.com/
https://developer.mozilla.org/en-US/docs/Web/Security/CSP
Web安全之CSP的更多相关文章
- 关于 Web 安全,99% 的网站都忽略了这些
Web安全是一个如何强调都不为过的事情,我们发现国内的众多网站都没有实现全站https,对于其他安全策略的实践更是很少,本文的目的并非讨论安全和攻击的细节,而是从策略的角度引发对安全的思考和重视. 1 ...
- CSP & CORS
CSP & CORS 内容安全策略 跨域资源共享 CSP https://developers.google.com/web/fundamentals/security/csp google ...
- how to get iframe dom in js
how to get iframe dom in js https://stackoverflow.com/questions/3999101/get-iframes-document-from-ja ...
- 安全相关的head头
与安全相关的head头包括 参考网站:https://developer.mozilla.org/en-US/docs/Web/HTTP Content-Security-Policy(CSP):禁止 ...
- 你不可不知的WEB安全知识(第一部分:HTTPS, TLS, SSL, CORS, CSP)
译 原文地址:https://dev.to/ahmedatefae/web-security-knowledge-you-must-understand-it-part-i-https-tls-s ...
- Web 安全之内容安全策略 (CSP)
内容安全策略 (CSP, Content Security Policy) 是一个附加的安全层,用于帮助检测和缓解某些类型的攻击,包括跨站脚本攻击 (XSS) 和数据注入等攻击. 这些攻击可用于实现从 ...
- CSP的今世与未来
一.从两个工具说起 最近Google又推出了两款有关CSP利用的小工具,其一为CSP Evaluator,这是一个能够评估你当前输入的CSP能否帮助你有效避免XSS攻击的工具,其用法非常简单,在输入框 ...
- 浅谈WEB安全性(前端向)
相信进来的时候你已经看到alert弹窗,显示的是你cookie信息(为配合博客园要求已删除).单纯地在你的客户端弹出信息只是类似于迫使你在自己的房间脱衣服——没人看得到,自然也不算啥恶意行为.那么如果 ...
- CSP -- 运营商内容劫持(广告)的终结者
缘由 我们公司最近手机端H5 经常受到商户和用户的投诉,说有广告并且导致不能正常进行操作,我们商户自己当然不会加广告了,但是商户和用户可不管这些了,就认为是我们的问题 探索发现根本 目前我们用的很多浏 ...
随机推荐
- 记录一下自己爬虎牙LOL主播的爬虫思路
1.明确爬虫目的 爬虫目的需要我们明确的,没有目的的爬虫都是耍流氓!像我这次爬虫目的能不能从网页上爬下来. 2.怎么来爬? a. 先要找到具有唯一性的标签 <li class="gam ...
- java_web学习(三) eclipse_jsp学习
1.首先打开eclipse,新建一个Dynamac web project项目文件 2.在WebContent单击右键创建JSP File 3.过程 4.简单的jsp代码 运行结果: 5.导出war文 ...
- CSS文本超出2行就隐藏并且显示省略号
今天做东西,遇到了这个问题,百度后总结得到了这个结果. 首先,要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用 ...
- [翻译].NET Shell Extensions - Shell Context Menus---.net 外壳扩展-右键菜单
我自己的前言说明: 本文原作者为 Dave Kerr,原文链接为.NET Shell Extensions - Shell Context Menus:,我是在为了完成最新需求的时候查询资料的时 ...
- BZOJ:4816: [Sdoi2017]数字表格
4816: [Sdoi2017]数字表格 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 501 Solved: 222[Submit][Status ...
- 51Nod 1277 字符串中的最大值(KMP,裸题)
1277 字符串中的最大值 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 一个字符串的前缀是指包含该字符第一个字母的连续子串,例如: ...
- 【笔记】nodejs读取JSON,数组转树
const fs = require('fs'); // --------------- 读取源文件 --------------- const originData = require('./vux ...
- SSH私用私钥登陆
1.导入私钥,将私钥文件放到当前登陆用户目录下的.ssh目录下 2.指定私钥登陆,ssh -i .ssh/ssh_rsa root@target.com 如果出现了下面这种情况 这是因为私钥文件权限 ...
- ASP.NET CORE中使用Cookie身份认证
大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cook ...
- 从零开始学习前端JAVASCRIPT — 1、JavaScript基础
1:定义:javascript是一种弱类型.动态类型.解释型的脚本语言. 弱类型:类型检查不严格,偏向于容忍隐式类型转换. 强类型:类型检查严格,偏向于不容忍隐式类型转换. 动态类型:运行的时候执行类 ...