这是一个CSP,问题与脚本源元素有关:
default-src' none&#39 ;; script-src' self' '不安全-EVAL' https://maps.googleapis.com; style-src' self' https://fonts.googleapis.com' unsafe-inline&#39 ;;
因此,此CSP设置了不安全的eval,此设置是否适用于所有脚本或仅适用于Self脚本,即不安全的eval应用于什么级别的粒度?
答案 0 :(得分:2)
它适用于所有脚本。
原因是,'unsafe-eval'
和'self'
只是CSP规范称为“源表达式”的不同类型,以及CSP指令的值,例如{ {1}}是CSP规范所称的“源列表”</ em> - 单独的各个源表达式的列表。
CSP源列表中的源表达式之间没有内部关联 - 相反,它们都将全局应用于与其关联的指令。
因此,如果您为script-src
指令的值指定'unsafe-eval'
,那么它始终具有全局允许script-src
在文档中依赖的任何JavaScript代码的效果。
来自https://w3c.github.io/webappsec-csp/#framework-directive-source-list:
许多指令的值由 源列表 组成:字符串集,用于标识可以提取并可能嵌入或执行的内容。每个字符串代表以下类型的 源表达式 之一:
eval()
和'none'
'等关键字(分别与当前网址的来源无关)序列化的网址,例如
'self
(与特定文件匹配)或https://example.com/path/to/file.js
(与该来源的所有内容相匹配)
https://example.com/
等计划(匹配具有指定方案的任何资源)
https:
等主机(与主机上的任何资源匹配,无论方案如何)或example.com
(与主机子域中的任何资源(及其任何子域的子域)匹配) ,等等))
*.example.com
等符号(可以匹配网页上的特定元素)- 醇>
摘录,例如
'nonce-ch4hvvbHDpv7xCSvXCs3BrNggHdTzxUA'
(可以匹配网页上的特定元素)