You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

内容安全策略(CSP)粒度问题:'unsafe-eval'是否全局适用于所有脚本?

关于CSP中unsafe-eval作用范围的解析

嘿,这个问题抓得很准!很多人刚接触CSP时都会搞不清这类关键字的作用范围,我给你一步步拆解清楚:

先把你给出的CSP配置贴出来方便对照:

default-src 'none'; 
script-src 'self' 'unsafe-eval' https://maps.googleapis.com; 
style-src 'self' https://fonts.googleapis.com 'unsafe-inline';

核心结论

'unsafe-eval'不是仅适用于'self'来源的脚本,而是对script-src指令下所有被允许的脚本来源都生效。

详细解释

在CSP的指令逻辑里,像script-src这类资源指令的各个值属于一个许可集合,彼此是并列关系,不存在“关键字绑定某个来源”的情况:

  • 'self' 允许加载当前同源的脚本文件
  • https://maps.googleapis.com 允许加载谷歌地图域名下的脚本文件
  • 'unsafe-eval' 是权限类关键字,作用是放开动态代码执行的限制——只要脚本来自script-src里允许的来源(不管是同源还是谷歌地图的),都可以使用eval()、new Function()、setTimeout(string)这类依赖动态代码解析的功能。

关于配置粒度

这个CSP的粒度是按资源类型指令划分的:

  • 每个指令(比如script-src管脚本、style-src管样式)独立控制对应资源的规则
  • 指令内部的来源和权限关键字共同定义该资源类型的允许范围,权限关键字是全局作用于整个指令的,而非绑定单个来源。

内容的提问来源于stack exchange,提问作者Darragh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:22:56