强制运行仓库定义的 npm 命令会以用户权限执行项目代码
原文依据:2 处`npm test` 和 `npm run lint` 执行由当前仓库 `package.json` 定义的脚本;这些脚本并非由此 Skill 展示或约束。`npx tsc` 还可能解析或取得可执行包。因此,把这些命令规定为“每次提交前”运行,会执行来自未审查项目的代码。
恶意或被篡改的项目脚本可读取或修改用户可访问的文件和凭据,并在环境允许时访问网络或启动其他程序。
“每次提交前”的指令会运行 `npm test` 和 `npm run lint`,它们执行当前仓库在 package.json 中定义的脚本,而这些脚本未包含在证据中;恶意或受损仓库可借此以代理的用户权限读写文件或访问环境中的凭据。`npx` 在缺少本地命令时还可能取得并执行包。用户可仅允许经过审查、锁定且在受限环境中运行的脚本。
## Pre-Commit HygieneBefore every commit:```bash# 1. Check what you're about to commitgit diff --staged# 2. Ensure no secretsgit diff --staged | grep -i "password\|secret\|api_key\|token"# 3. Run testsnpm test# 4. Run lintingnpm run lint# 5. Run type checkingnpx tsc --noEmit```查看另外 1 个位置
# 3. Run testsnpm test# 4. Run lintingnpm run lint# 5. Run type checkingnpx tsc --noEmit```