内容安全策略(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 帮助链接,与操作手册 域名管理 步骤三一致。

相关操作