SuperAPI AI 工具集

astro-security

安全与审计

查看项目

更新于 10-15 21:48

技能介绍

用途:在 Astro 项目中启用与配置内容安全策略(CSP),处理安全响应头、脚本与样式哈希、nonce,以及通过适配器 staticHeaders 将 CSP 作为 HTTP 头输出。CSP 自 Astro 6.0 起稳定,Astro 7 中保持不变。

主要能力:启用后 Astro 自动为打包的脚本和样式生成 SHA 哈希,并在每个页面 head 注入 meta http-equiv="content-security-policy",默认支持 script-src 与 style-src 指令。自 7.1 起,哈希/资源可接受 { hash | resource, kind: 'element' | 'attribute' | 'default' },用于定位 *-src-elem / *-src-attr。适配器的 staticHeaders 选项(原 experimentalStaticHeaders)可将 CSP 作为 HTTP 头而非 meta 标签输出。

使用方式:在 astro.config.mjs 中配置 security.csp;外部脚本与样式需手动配置哈希;动态脚本注入可使用 nonce;建议从 SHA-512 开始,使用 resources 数组时显式加入 'self',并可在 Vercel/Netlify/Node 适配器上设置 staticHeaders: true。

限制:CSP 在开发模式下不生效,需用 build + preview 测试;与 <ClientRouter /> 视图过渡不兼容(可用原生 View Transition API);Shiki 语法高亮的内联样式暂不支持;不涵盖 CSP 头接线之外的通用部署适配器设置。禁止在开发模式测试 CSP、启用 CSP 时使用 <ClientRouter />、使用 resources 时遗漏 'self'、添加 unsafe-inline。