内容安全策略(Content Security Policy)
内容安全策略(Content Security Policy)
内容安全策略(Content Security Policy)是一种声明的安全机制,可以让网站运营者能够控制遵循CSP的用户代理(通常是浏览器)的行为。通过控制要启用哪些功能,以及从哪里下载内容,可以减少网站的攻击面。
CSP的主要目的是防御跨站点脚本(cross-ste scripting,XSS)攻击。例如,CSP可以完全禁止内联的JavaScript,并且控制外部代码从哪里加载。它也可以禁止动态代码执行。禁用了所有的攻击源,XSS攻击变得更加困难。
CSP由Mozilla开发,曾经有几年试验过概念,一开始称为内容限制(content restriction),后来改称为内容安全策略。2012年11月CSP 1.0成为W3C的候选议案。
网站通过设置Content-Security-Policy响应头启用所需的CSP策略。
策略实例:
Content-Security-Policy: default-src ‘self’; img-src *;object-src *.cdn.chziyue.com;script-src scripts.chziyue.com
该策略默认只允许资源从同一来源加载,但允许图像从任何URI加载,插件内容只从指定的CDN地址加载,外部脚本仅从scripts.chziyue.com加载。
不像HSTS,CSP策略不是持久的;只在引用他们的页面上生效,之后就消失了。因此,使用CSP风险要小很多。如果产生错误,策略可以立即更新生效。即使被注入响应头,也不会有持续性拒绝服务攻击的风险。
防止混合内容问题
如果安全网页依赖的资源(例如,图像和脚本)是通过明文连接检索的,就会出现混合内容问题。这些年浏览器虽然对这个问题的处理有改善,但它们的方法通常仍然太过宽松。例如,所有浏览器都允许所谓的被动式混合内容(passive mixed content),通常是图像。不出所料的是,在不同浏览器上也有处理差异。例如,Safari目前不强加任何限制,甚至对脚本也是。
因为CSP让我们能够控制其中的内容来源,所以可以用它来指导遵循CSP的浏览器只使用安全协议,也就是对WebSocket协议用wss,剩下的其他都用https。
因此,只解决混合内容问题,而不尝试改善其他的话,可以考虑下面的CSP策略作为出发点:
Content-Security-Policy: default-src https: 'unsafe-inline' 'unsafe-eval';connect-src https: wss:
该策略包括以下三个主要内容:
default-src指令确定该页面可以从任何地方(任何主机和任何端口)加载提供了安全连接(https)的内容
‘unsafe-inline’和‘unsafe-eval’表达式重新启用内联JavaScript和动态代码执行,这些默认情况下都是被CSP禁用的。理想情况下,通常不会希望在策略里保留这些表达式,但没有它们大多数现有的应用都会被阻断。
connect-src指令控制脚本接口(本如XMLHttpRequest、WebSockets、EventEource等)所使用的内容位置。
一旦确立了最初的策略可以工作,请考虑收紧JavaScript执行(通过删除‘unsafe-inline’和’unsafe-eval’表达式),并用更具体的主机取代通用源的限制(例如,使用https://cdn.chziyue.com取代https)。
策略测试
有关CSP的一个好处是,能够在执行一个策略的同时并行测试其他策略。这意味着,可以在比开发环境要复杂得多的生产环境中部署测试策略。
Content-Security-Policy-Report-Only响应头用于创建一个仅用于测试的策略:
Content-Security-Policy-Report-Only: default-src ‘self’
如果只启用报告的策略出错,并不会阻塞请求,但可以配置报告使得故障可被传递回起初的网站。
浏览器支持
当前浏览器对CSP的支持较好。Chrome和Firefox试验了多年,而且最近其他主流浏览器也逐步开始支持。桌面浏览器里面唯一不支持CSP的是Internet Explorer。Microsoft的新一代浏览器Edge,在Windows 10中首次亮相,支持CSP 1.0。
内容安全策略(Content Security Policy)相关推荐
- http内容安全策略Content Security Policy(CSP)
内容安全策略CSP是安全性的附加层,有助于检测和缓解某些类型的攻击,包括跨站点脚本(Cross Site Scripting (XSS) Software Attack | OWASP Foundat ...
- DVWA 黑客攻防实战(十五) 绕过内容安全策略 Content Security Policy (CSP) Bypass
看到标题,是否有点疑惑 CPS 是什么东东.简单介绍一下就是浏览器的安全策略,如果 标签,或者是服务器中返回 HTTP 头中有 Content-Security-Policy 标签 ,浏览器会根据标签 ...
- Vue打包后出现的bug -favicon.ico' because it violates the following Content Security Policy direc
打开vue的项目,但是页面显示的是Cannot GET,打开控制台之后,发现有一篇红色报错. //Refused to load the image 'http://localhost:8080/fa ...
- 正当防卫CSP(content security policy)
同源策略致使不同域名下的资源不可互相访问,起到安全保护的作用,但这一策略有时会防卫过当,将安全可信的脚本也误认为不安全因素后报错: because it violates the following ...
- Content Security Policy的学习理解
以下内容转载自 http://www.cnblogs.com/alisecurity/p/5924023.html 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编 ...
- Content Security Policy 入门教程
From: http://www.ruanyifeng.com/blog/2016/09/csp.html 跨域脚本攻击 XSS 是最常见.危害最大的网页安全漏洞. 为了防止它们,要采取很多编程措施, ...
- because it violates the following Content Security Policy directive: “default-src ‘none‘“
在打开页面时浏览器报如下错误: Refused to load the script 'http://xx.xx.xx.xx:xxxxx/livereload.js?snipver=1' becaus ...
- Refused to execute inline script because it violates the following Content Security Policy directive
版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 问题描述 在利用表单向后台提交数据时,前端页面报错: Refused to execute i ...
- violates Content Security Policy报错1
index.html:1 Refused to load the script 'https://webapi.amap.com/maps?v=1.4.13&key=b7063c0343460 ...
最新文章
- AWS攻略——使用CodeBuild进行自动化构建和部署静态网页
- CUDA Study ---- Hardware Architecture
- django+celery+rabitmq
- 创业周年记:召唤神龙一周年小记
- 教你吃透CSS的盒子模型(Box Model)
- zipkin brave mysql_zipkin mysql表结构
- 使用计算机效果不理想的应用,有效提高计算机应用课程教学效果的方法探究.doc...
- android禁用应用组件,Android彻底退出(关闭)应用程序.docx
- 服务器c盘显示0字节可用,c盘0字节可用怎么解决 c盘0字节可用处理方法
- 伺服电机回原点的原理_西门子V90伺服电机绝对值编码器回原点常用方法
- 敏捷开发用户故事系列之六:用户故事的产生与组织结构
- c语言给一个函数添加功能,【C语言】请编写实现以下功能函数:实现对一个8bit数据(unsigned char)的指定位(例如第8位)的置0或置1操作,并保持其他位不变...
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南):签到题A Matrix Equation(高斯消元求线性异或方程组自由元个数)
- 平板Android调试打开log,Android 调试日志
- HttpServletRequest请求转发
- Pytorch向量各个元素的n次方求和
- Chapter Two:无限debugger的原理与绕过与断点调试
- Mybatis XML文件属性配置
- DNS劫持怎么办、如何修复DNS劫持?DNS劫持怎么修复
- excel表格打印每页都有表头_表格很长,如何使打印出来的每张纸上都有固定的表头?...