HTTP Content Security Policy 介绍

发布时间: 更新时间: 总字数:799 阅读时间:2m 作者: IP上海 分享 网址

内容安全政策Content Security Policy, CSP用来定义页面可以加载哪些资源,减少 XSS 的发生

使用 CSP

使用 CSP 需要添加类似的 Header

Content-Security-Policy: default-src 'self'

说明:

  • default-srcCSP 指令,多个指令之间用英文分号分割
  • 'self' 是指令值,多个指令值用英文空格分割,值内容说明
    • 'self' 允许加载相同源的内容
    • '*' 允许加载任何内容
    • 'none' 不允许加载任何内容

指令

指令 指令值示例 说明
default-src 'self' cnd.xiexianbin.cn 定义针对所有类型(js、image、css、web font,ajax 请求,iframe,多媒体等)资源的默认加载策略,某类型资源如果没有单独定义策略,就使用默认的。
script-src 'self' js.xiexianbin.cn 定义针对 JavaScript 的加载策略。
style-src 'self' css.xiexianbin.cn 定义针对样式的加载策略。
img-src 'self' img.xiexianbin.cn 定义针对图片的加载策略。
connect-src 'self' 针对 Ajax、WebSocket 等请求的加载策略。不允许的情况下,浏览器会模拟一个状态为 400 的响应。
font-src font.xiexianbin.cn 针对 WebFont 的加载策略。
object-src 'self' 针对 <object>、<embed> 或 <applet> 等标签引入的 flash 等插件的加载策略。
media-src media.xiexianbin.cn 针对 <audio> 或 <video> 等标签引入的 HTML 多媒体的加载策略。
frame-src 'self' 针对 frame 的加载策略。
sandbox allow-forms 对请求的资源启用 sandbox(类似于 iframe 的 sandbox 属性)。
report-uri /report-uri 告诉浏览器如果请求的资源不被策略允许时,往哪个地址提交日志信息。特别的:如果想让浏览器只汇报日志,不阻止任何内容,可以改用 Content-Security-Policy-Report-Only 头。

指令值

指令值可以由下面这些内容组成:

指令值 指令示例 说明
img-src 允许任何内容。
'none' img-src 'none' 不允许任何内容。
'self' img-src 'self' 允许来自相同来源的内容(相同的协议、域名和端口)。
data: img-src data: 允许 data: 协议(如 base64 编码的图片)。
www.xiexianbin.cn img-src img.xiexianbin.cn 允许加载指定域名的资源。
.xiexianbin.cn img-src .xiexianbin.cn 允许加载 xiexianbin.cn 任何子域的资源。
https://img.com img-src https://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()。

HTML 配置

  • HTML 配置 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"/> 作用是告诉浏览器访问 http 时强制跳转到 https
  • HTML 配置示例
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">

Nginx 配置

  • nginx 实现类似的功能:add_header Content-Security-Policy "upgrade-insecure-requests;connect-src *";

参考

  1. https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数