第三方脚本与供应链
前端极易引入 统计脚本、客服挂件、广告、npm 依赖。任一环节被篡改,等价于在全体用户浏览器执行攻击者代码( 供应链攻击 )。
风险形态
- CDN 脚本被替换:
<script src="https://cdn/vendor/analytics.js">若 CDN 账号泄露或被劫持。 - npm 包投毒:安装量大的库被植入挖矿或窃取 env。
- 浏览器插件:开发机器插件读写页面(偏客户端,但影响前端产物)。
防护:子资源完整性(SRI)
第三方脚本带哈希:
html
<script
src="https://cdn.example/jquery/3.7.1/jquery.min.js"
integrity="sha384-xxxxx Base64..."
crossorigin="anonymous"
></script>哈希与 CDN 文件不一致时浏览器 拒绝执行。
防护:锁定依赖版本与审计
json
{
"dependencies": {
"lodash": "4.17.21"
}
}配合 npm audit / pnpm audit;CI 中运行审计。
防护:自建封装层
对必须的第三方能力 在自己的域名反向代理 + SRI,减少对上游任意跳转的信任。
小结
默认假设 外链脚本不可信直到校验完整性;npm 使用 锁文件 + 审计 + 最小依赖;高危页面避免叠加过多不明 <script>。
