内容安全策略(CSP)
巴克励步
内容安全策略(Content-Security-Policy,CSP)在 Baklib 中按 单域名 配置,入口为 应用设置 → 域名管理 → 域名配置 → 内容安全策略。它控制浏览器可为该域名下的页面加载哪些脚本、样式、图片与嵌入来源,是站点被 iframe 嵌入第三方页面 或接入外部统计/播放器时的关键安全阀。
是什么
CSP 通过 HTTP 响应头(或等效机制)声明 允许加载资源的来源白名单。Baklib 将 CSP 作为域名级基础设施能力(v2024-10 域名基础设置)集中管理,避免在主题里硬编码策略。
标准策略语义遵循 Web 平台规范,指令含义以 MDN · Content-Security-Policy 为准。常见指令包括:
| 指令 | 作用 |
|---|---|
default-src |
默认资源来源 |
script-src / style-src |
脚本与样式来源 |
img-src / font-src |
图片与字体 |
frame-ancestors |
谁可以嵌入本站点(与 iframe 场景强相关) |
在域名配置中可 新增多条 CSP 规则 并保存;各模块旁 [刷新] 可重新加载当前生效配置。
边界与限制
- CSP 作用于 该域名下的前台响应;后台管理界面通常不走同一套访客 CSP。
- 策略过严会导致前台脚本、主题 CDN 或 iframe 代码嵌入 的第三方内容被浏览器拦截;过松则削弱 XSS 与点击劫持防护。变更后须在目标浏览器实测控制台报错。
- frame-ancestors 与第三方「允许被嵌入」双向相关:父站 CSP 与子站 CSP 需同时满足,否则出现空白 iframe。
- CSP 不能替代 Cookie 跨域策略:嵌入场景下登录态还受 SameSite、第三方 Cookie 限制。
- 非 Baklib 托管域名(仅组织域名跳转等)的 CSP 行为以实际部署模式为准;反向代理模式下,部分头由 Nginx 追加,需避免与平台策略冲突。
典型场景
- 帮助中心嵌入企业门户:在子站域名配置放宽
frame-ancestors指向门户域,父站用 iframe 挂载 Baklib URL。 - 仅允许自家脚本:
script-src 'self'限制外链 JS,降低供应链风险(需确认主题与统计脚本域名已列入)。 - 接入视频/地图组件:为特定 CDN 域增加
img-src/frame-src条目。
配置前建议对照 MDN 教程理解各指令;Baklib 界面提供 Content-Security-Policy 帮助链接,与操作手册 域名管理 步骤三一致。
相关操作
- 域名管理 — 域名配置弹窗 · CSP 模块
- iframe 代码嵌入
- Cookie 跨域策略
- V0.9.0-域名基础设施能力