npx 和未固定版本的 npm 安装会在 CI 中执行下载的第三方代码
原文依据:4 处示例直接运行 npx 包,库集成示例还使用没有版本号或锁文件保证的 `npm install --save-dev liarjs`。固定 `liarjs@0.3` 只固定顶层版本,并未在这些命令中固定下载内容的完整依赖树或校验值。
如果包、其依赖或包分发账户被破坏,安装或运行代码可能读取 CI 环境变量、访问工作区,或使用作业令牌所拥有的权限。
示例会通过 `npx` 执行 `liarjs`,并另有不带版本号的开发依赖安装命令。`liarjs@0.3` 固定了顶层版本,但所示命令没有展示锁文件或完整性校验;若运行环境未缓存该包,包管理器可能从配置的软件源取得并执行第三方包及其依赖。用户可要求作者提供锁文件、完整性验证或预审镜像。
```bashnpx liarjs@0.3 --headless --min-score 60```查看另外 3 个位置
```bashnpm install --save-dev liarjs``````bashdocker run --rm \ --shm-size=1g \ --security-opt seccomp=chrome.json \ -v "$PWD:/w" -w /w node-liarjs \ npx liarjs@0.3 --headless --min-score 60```- Pin the version (`liarjs@0.3` or a dev dependency in the lockfile). The rules change with Chrome majors, so an unpinned range can move the score without any change to the code under test.- A headless job scores lower than a headed one by design. Take the baseline in the same mode the