概述`strict-dynamic` 使带有可信 `nonce` 或 `hash` 的脚本成为信任根,并信任其通过动态创建的后续脚本(如 `document.createElement('script')`),同时忽略传统的域白名单。与 `nonce`/`hash` 配合可显著提升脚本治理与抗注入能力。用法与示例HTTP 响应头(建议)Content-Security-Policy: script-src 'nonce-abc123' 'strict-dynamic' https:; object-src 'none'; base-uri 'none' HTML 示例(注入 nonce)<script nonce="abc123">/* 初始化脚本 */</script> <script nonce="abc123" src="/js/app.js"></script> 工程建议生成 nonce:为每次响应生成高熵 nonce 并注入到允许的 `<script>`;后端模板或中间层统一处理。移除内联风险:避免 `unsafe-inline`;对必要内联使用 `nonce` 或 `hash`。第三方脚本:通过可信加载器(带 nonce)引入,减少域白名单依赖;配合 SRI 校验。报告与灰度:启用 `report-to/report-uri` 收集违规并逐步收紧策略。参考与验证CSP Level 3 规范:https://w3c.github.io/webappsec-csp/MDN CSP `script-src` 与 `strict-dynamic`:https://developer.mozilla.org/docs/Web/HTTP/Headers/Content-Security-Policy/script-srcweb.dev CSP 指南:https://web.dev/articles/csp

发表评论 取消回复