如何在Content Security Policy中限制仅加载指定CDN的特定JS文件
CSP限制特定CDN文件加载方案
实现可行性
可以实现,CSP的script-src指令支持指定精确到单个文件的完整路径,无需依赖其他额外配置。
具体修改方法
原有配置中script-src里的https://cdnjs.cloudflare.com是域名级的允许规则,会放行该域名下的所有JS资源,你只需要将该域名替换为B、C两个JS文件的完整绝对路径即可。
比如假设B文件的完整访问地址是https://cdnjs.cloudflare.com/ajax/libs/lodash/4.17.21/lodash.min.js、C文件的完整访问地址是https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js,修改后的配置如下:
<add name="Content-Security-Policy" value="default-src 'self'; script-src 'self' https://cdnjs.cloudflare.com/ajax/libs/lodash/4.17.21/lodash.min.js https://cdnjs.cloudflare.com/ajax/libs/react/18.2.0/umd/react.production.min.js" />
注意事项
- 路径必须和页面中实际引用的JS文件地址完全一致,包括路径层级、文件名、文件后缀、版本号等所有字符,大小写敏感的场景下大小写也要匹配,否则会触发CSP拦截
- 配置完成后同CDN域名下除了你指定的两个文件外的其他所有JS资源都会被自动拦截,符合权限最小化的要求
- 如果后续你更新了这两个JS文件的版本或者路径,需要同步更新CSP配置中的对应路径,否则新版本资源无法正常加载
内容的提问来源于stack exchange,提问作者Rituraj
相关产品推荐
相关产品推荐

