1、内容安全策略CSP的是什么?
之前我们给大家讲同源策略(协议、域名、端口相同)时讲到,不同源资源之间无法正常情况下会有一些限制,如:
1、Cookie、LocalStorage 和 IndexDB 无法读取
2、DOM无法获得
3、AJAX请求不能发送
但是实际应用中,一个有很多时候我们需要在多个不同域名的资源中相互访问。那么这个时候除了之前讲到的document.domain、<script>标签、WebSocket协议等方法还有什么比较安全又方便的方法吗?这就是今天要讲的内容安全策略CSP。
![](https://img.haomeiwen.com/i3215549/5e87d6eddc4deb75.png)
CSP是浏览器的扩展程序系统引入的一种内容安全策略,该策略允许加载同源的图片、脚本、AJAX和CSS资源,并阻止加载其他任何资源。简单的说就是一个可跨域访问白名单:
CSP 的实质就是白名单制度,开发者明确告诉客户端,哪些外部资源可以加载和执行,等同于提供白名单。它的实现和执行全部由浏览器完成,开发者只需提供配置。
CSP 大大增强了网页的安全性。攻击者即使发现了漏洞,也没法注入脚本,除非还控制了一台列入了白名单的可信主机。
2、CSP的使用
(1)在HTTP Header上使用(首选)
"Content-Security-Policy:" 策略"Content-Security-Policy-Report-Only:" 策略
(2)在HTML上使用
<metahttp-equiv="content-security-policy"content="策略"><metahttp-equiv="content-security-policy-report-only"content="策略">
Meta 标签与 HTTP 头只是行式不同而作用是一致的,如果 HTTP 头与 Meta 定义同时存在,则优先采用 HTTP 中的定义。如果用户浏览器已经为当前文档执行了一个 CSP 的策略,则会跳过 Meta 的定义。如果 META 标签缺少 content 属性也同样会跳过。
网友评论