登录
首页 >  文章 >  前端

设置CSP的script-src指令可有效限制HTML中可执行脚本的来源域名,具体方法如下:在HTTP响应头中添加Content-Security-Policy 在服务器配置(如Nginx、Apache)或后端代码中,设置响应头:Content-Security-Policy: script-src 'self' https://trusted-domain.com;'self' 表示允许当前域名

时间:2026-05-26 14:18:33 483浏览 收藏

CSP的script-src指令是前端安全防护的关键一环,通过精准配置域名白名单(如'self'和可信CDN)能有效阻止恶意脚本执行,但其语法极其严格——单引号包裹、空格分隔、不支持通配符或路径,写错一个字符就可能导致页面白屏;内联脚本和eval默认被禁,需用nonce或哈希替代而非妥协启用'unsafe-inline';优先采用HTTP响应头而非meta标签配置,并务必通过Report-Only模式灰度验证,否则漏掉一个第三方SDK就可能让核心功能静默失效——这不是理论风险,而是无数线上事故的真实写照。

如何在HTML中通过CSP的script-src指令限制可执行脚本来源域名

直接用 script-src 指令就能精准控制哪些域名的脚本可执行,但写错一个引号或漏掉 'self' 就会导致整个页面白屏——这不是夸张,是真实发生的高频事故。

script-src 域名白名单怎么写才不崩溃

核心原则:只列出你真正需要的来源,且每个来源必须用单引号包裹、空格分隔。浏览器会严格按字面匹配,不支持通配符(如 *.cdn.com)或子路径(如 https://api.example.com/v1)。

  • 'self' 必须显式写出,它代表当前页面协议+域名+端口,不是“默认开启”
  • HTTPS 域名要带完整协议,https://cdn.example.comhttp://cdn.example.com 视为两个不同源
  • 不允许写裸域名(如 cdn.example.com),也不允许写带路径的 URL(如 https://cdn.example.com/js/
  • 如果用了 data:blob: 等特殊协议,也得单独加进去,例如 data: blob:

正确示例:Content-Security-Policy: script-src 'self' https://cdn.jsdelivr.net https://unpkg.com

为什么内联脚本和 eval 会突然失效

因为只要没显式加上 'unsafe-inline''unsafe-eval'script-src 默认就禁用它们——这是 CSP 的安全基线,不是 bug。

  • 这类内联脚本会被拦截,控制台报错 Refused to execute inline script
  • onclick="doSomething()"javascript:void(0) 等事件处理器和伪协议也会被阻止
  • eval()setTimeout("...")new Function(...) 全部失效,报错 Refused to evaluate a string as JavaScript

想保留某段内联脚本?别加 'unsafe-inline',改用 nonce 或哈希:script-src 'self' 'nonce-abc123',然后在对应

资料下载
最新阅读
更多>
课程推荐
更多>
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    立即学习 543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    立即学习 516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    立即学习 500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    立即学习 487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    立即学习 485次学习