CSP 全名 内容安全策略(Content Security Policy) 主要用来防御:XSS CSP 基本思路 定义外部内容引用的白名单 例如 页面中有个按钮,执行的动作源于 http://a.com/x.js,但如果被攻击的话,有可能执行的是 http://b.com/x.js 浏览器可以下载并执行任意js请求,而不论其来源
CSP 的作用就是创建一个可信来源的白名单,使得浏览器只执行来自这些来源的资源,而不是盲目信任所有内容,即使攻击者可以找到漏洞来注入脚本,但是因为来源不包含在白名单里,因此将不会被执行
例如把 http://a.com 放入白名单,那么浏览器便不会执行 http://b.com/x.js
示例 我们相信 http://a.com 提供有效的代码,以及我们自己,所以可以定义一个策略,允许浏览器只会执行下面两个来源之一的脚本 Content-Security-Policy: script-src 'self' http://a.com 非常简单,使用 Content-Security-Policy 头来设定,script-src 指令指定了可信的脚本来源 指令说明 default-src 默认策略,当其他各个特殊指令源没有赋值时,就按照该指令值,优先级最低 script-src 脚本来源,当default-src或者script-src二者有一个指定了值,那么inline script 和 eval()就被禁止,除非分别使用'unsafe-inline' and 'unsafe-eval'来放行 content-src 限制连接的类型(例如XMLHttpRequest、WebSockets和EventSource) font-src 控制网络字体的来源 frame-src 列出了可以嵌入的frame的来源(<frame> 和<iframe>元素) img-src 定义了可加载图像的来源 media-src 限制视频和音频的来源(<audio> 和 <video>元素) object-src 限制Flash和其他嵌入对象的来源 style-src 类似于Script-src,只是作用于css文件 案例 Content-Security-Policy:
default-src 'none';
script-src http://cdn.my.com;
style-src http://cdn.my.com;
img-src http://cdn.my.com;
connect-src http://api.my.com;
frame-src 'self' 这个例子指定了默认策略:阻止所有内容 脚本、样式、图片 都只信任 http://cdn.my.com 数据连接请求只允许 http://api.my.com 引用的frame只来自本地