概述`strict-dynamic` 允许由可信脚本动态加载的脚本继承信任,配合随机 `nonce` 可替代来源白名单并提升安全性。该策略防止非预期脚本执行并简化第三方脚本管理。关键实践与参数头部策略: `Content-Security-Policy: script-src 'nonce-<random>' 'strict-dynamic' https:; object-src 'none'`随机nonce: 每请求生成不可预测字符串动态加载: 仅从带nonce的根脚本引入下游脚本监控与报告: 使用 `report-to`/`report-uri`示例/配置/实现// Node服务端生成nonce并注入 import crypto from 'crypto' function genNonce() { return crypto.randomBytes(16).toString('base64') } app.use((req, res, next) => { const nonce = genNonce() res.setHeader('Content-Security-Policy', `script-src 'nonce-${nonce}' 'strict-dynamic' https:; object-src 'none'`) res.locals.nonce = nonce next() }) <script nonce="{{nonce}}">/* bootstrap可信脚本 */</script> // 可信脚本中动态加载 const s = document.createElement('script') s.src = 'https://cdn.example.com/app.js' document.head.appendChild(s) 验证非可信拦截: 未带nonce的内联脚本与插入的脚本被拒绝信任链: 由带nonce脚本加载的下游脚本正常执行报告: 违规事件通过CSP报告端点可见兼容性: 在现代浏览器上工作, 旧版需回退策略注意事项每请求生成唯一nonce, 禁止复用移除 `'unsafe-inline'` 与广泛白名单第三方脚本需通过可信引导加载搭配COOP/COEP与Permissions-Policy协同治理

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.988388s