Skip to content

第三方脚本与供应链

前端极易引入 统计脚本、客服挂件、广告、npm 依赖。任一环节被篡改,等价于在全体用户浏览器执行攻击者代码( 供应链攻击 )。


风险形态

  1. CDN 脚本被替换<script src="https://cdn/vendor/analytics.js"> 若 CDN 账号泄露或被劫持。
  2. npm 包投毒:安装量大的库被植入挖矿或窃取 env。
  3. 浏览器插件:开发机器插件读写页面(偏客户端,但影响前端产物)。

防护:子资源完整性(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>