## 経緯
[[🦉owlery]]の `npmセキュリティ強化設定ノートの更新余地 再調査 2026-07-25` に従って、[[📕npmのセキュリティ強化設定]]の情報を最新化する。
### バージョン
| 対象 | ノート記載(2026/05列) | **今回の最新(07-25)** |
| -------- | --------------- | --------------------------------------- |
| [[npm]] | 11.12.1 | **12.0.1**(07-10。変動なし) |
| [[pnpm]] | 11.0.0 | **11.17.0**(07-23) |
| [[Bun]] | 1.3.13 | **1.3.14**(**05-13**。stableは2ヶ月以上出ていない) |
| [[Deno]] | 2.7.13 / 2.8.0 | **2.9.4**(07-23) |
### やること
- ライフサイクルスクリプトの無効化
- [[npm]]が影響ある
- minimal release age
- npm欄に追記: v11.17.0で `min-release-age-exclude` が追加(特定ライブラリだけ除外)
- **Deno欄を「✅ デフォルトの設定でOK」に書き換え**: Deno 2.9で `minimumDependencyAge` が既定有効(**24時間**)。公式blogで再確認済み
- 危険ソースの指定禁止
- v12.0.0で `allow-git` / `allow-remote` の既定値が `none` になった
- `root` で直接依存のみ許可
**凡例**: ✅ 対応済み・不要 / ⚠️ 要対応 / 📌 判断が要る
| 節 | [[npm]] (→12.0.1) | [[pnpm]] | [[Bun]] | [[Deno]] (→2.9.4) |
|---|---|---|---|---|
| 1. バージョンピン留め | ✅ `save-exact=true` 済 | ✅ `saveExact` 済 | ✅ `~/.npmrc` が効く | ✅ 都度 `--save-exact`(設定不可) |
| 2. ロックファイル | ✅ `npm ci` | ✅ `pnpm ci` | ✅ `bun ci` | ✅ `deno ci`(2.8で既に可) |
| 3. スクリプト無効化 | 📌 `ignore-scripts=true` を**外せる** | ✅ 既定 | ✅ `ignoreScripts` 済 | ✅ 既定 |
| 4. Minimal Release Age | ✅ `min-release-age=1` 済 | ✅ 既定(1日) | ⚠️ **未設定** | ✅ 上げれば既定(24h) |
| 5. 危険なソース禁止 | 📌 v12で自動的に有効 | ✅ 既定 | — 機能なし | — 機能なし |
| 6. trust policy(新設候補) | — 機能なし | 📌 要設定 | — 機能なし | 📌 要設定 |
### 設定
| 場所 | 内容 |
|---|---|
| `~/.npmrc` | `ignore-scripts=true` / `min-release-age=1` / `save-exact=true` |
| pnpm global config | `saveExact: true` のみ |
| `~/.bunfig.toml` | `[install] ignoreScripts = true` のみ |
| Deno | 設定ファイルなし(プロジェクト単位) |
## ライフサイクルスクリプトの無効化
[[📕ライフサイクルスクリプトが実行されているかを確認する]] を参考に、サンプルプロジェクトを作成。
```console
$ npm config set ignore-scripts false
$ npm i --foreground-scripts
npm notice run postinstall
npm notice run echo '[root] postinstall'
[root] postinstall
up to date, audited 3 packages in 113ms
found 0 vulnerabilities
npm warn install-scripts 1 package had install scripts blocked because they are not covered by allowScripts:
npm warn install-scripts testpkg (postinstall: echo '[testpkg] postinstall')
npm warn install-scripts
npm warn install-scripts Run `npm install-scripts ls` to review, or `npm install-scripts approve <pkg>` to allow.
```
[[postinstall]]の結果は設定によって変わった。
- `~/.npmrc` に `ignore-scripts` なし
- rootだけ実行
- `~/.npmrc` に `ignore-scripts=false`
- rootもpkgも実行
- `~/.npmrc` に `ignore-scripts=true`
- 実行されない
## 危険なソース禁止
[[npm]]に [[allow-git (npm)|allow-git]] と [[allow-remote (npm)|allow-remote]] の件、およびデフォルト設定で問題ない旨を追加。