CSP 指令集

减少 XSS(Cross-site scripting)攻击

或者头, 感觉meta灵活点,多页面一致性 header 方便,兼容好


Meta 标签的 Content-Security-Policy-Report-Only 方式在当前(2016/5/19)多数移动端浏览器上表现正常,但是 不推荐 这样做,如 chrome 50 会产生如下的提示
The report-only Content Security Policy xxxxxxx was delivered via a element,which is disallowed. The policy has been ignored.
指令取值示例说明
default-src‘self’ cdn.example.com定义针对所有类型(js/image/css/web font/ajax/iframe/多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认。
script-src‘self’ js.example.com定义针对JavaScript的加载策略
object-src‘self’针对object,embed, 等标签的加载策略
style-src‘self’ css.example.com定义针对样式的加载策略
img-src‘self’ image.example.com定义针对图片的加载策略
media-src‘media.example.com’针对或者引入的html多媒体等标签的加载策略
frame-src‘self’针对iframe的加载策略
connect-src‘self’针对Ajax、WebSocket等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为400的响应
font-srcfont.qq.com针对Web Font的加载策略
sandboxallow-forms allow-scripts对请求的资源启用sandbox
report-uri/some-report-uri告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。不阻止任何内容,可以改用Content-Security-Policy-Report-Only头
base-uri‘self’限制当前页面的url(CSP2)
child-src‘self’限制子窗口的源(iframe、弹窗等),取代frame-src(CSP2)
form-action‘self’限制表单能够提交到的源(CSP2)
frame-ancestors‘none’限制了当前页面可以被哪些页面以iframe,frame,object等方式加载(CSP2)
plugin-typesapplication/pdf限制插件的类型(CSP2)

指令值示例及说明

指令值示例说明
*img-src *允许任何内容
‘none’img-src ‘none’不允许任何内容
‘self’img-src ‘self’允许同源内容
data:img-src data:允许data:协议(如base64编码的图片)
www.a.comimg-src www.a.com允许加载指定域名的资源
*.a.comimg-src *.a.com允许加载a.com任何子域的资源
https://img.comimg-srchttps://img.com允许加载img.com的https资源
https:img-src https:允许加载https资源
‘unsafe-inline’script-src ‘unsafe-inline’允许加载inline资源(style属性,onclick,inline js和inline css等等)
‘unsafe-eval’script-src ‘unsafe-eval’允许加载动态js代码,例如eval()
'unsafe-dynamic' script-src 'unsafe-dynamic' 'nonce-$NONCE' 运行加载nonce或hash指定的白名单不安全动态脚本