Skip to content

Commit c78f4cc

Browse files
authored
docs(env): clarify VITE_* variable exposure risk (#2433)
1 parent 6143e9c commit c78f4cc

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

guide/env-and-mode.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,14 @@ if (import.meta.env.DEV) {
3333
3434
Vite は環境変数を `import.meta.env` オブジェクトの下で自動的に文字列として公開します。
3535
36-
環境変数が誤ってクライアントに漏れてしまうことを防ぐために、`VITE_` から始まる変数のみが Vite で処理されたコードに公開されます。例えば、以下の環境変数だと:
36+
`VITE_` プレフィックスの付いた変数は、Vite のバンドル後にクライアントサイドのソースコードに公開されます。環境変数が誤ってクライアントに漏れてしまうことを防ぐために、このプレフィックスの使用を避けてください。例えば、以下の場合を考えてみましょう:
3737
3838
```[.env]
3939
VITE_SOME_KEY=123
4040
DB_PASSWORD=foobar
4141
```
4242
43-
`VITE_SOME_KEY` だけが `import.meta.env.VITE_SOME_KEY` としてクライアントソースコードに公開され`DB_PASSWORD` は公開されません。
43+
`VITE_SOME_KEY` のパース結果 `"123"` はクライアントに公開されますが`DB_PASSWORD` の値は公開されません。これは以下のコードを追加することで確認できます:
4444
4545
```js
4646
console.log(import.meta.env.VITE_SOME_KEY) // "123"
@@ -53,6 +53,12 @@ console.log(import.meta.env.DB_PASSWORD) // undefined
5353
上に示したように、`VITE_SOME_KEY` は数値ですが、パースすると文字列が返ります。同じことはブール型の環境変数にも起こります。コード内で使用する場合には、必ず目的の型に変換するようにしてください。
5454
:::
5555
56+
:::warning 秘密情報の保護
57+
58+
`VITE_*` 変数には API キーなどのセンシティブな情報を含めるべきでは**ありません**。これらの変数の値はビルド時にソースコードにバンドルされます。本番環境では、バックエンドサーバーやサーバーレス/エッジ関数を使用して秘密情報を適切に保護することを検討してください。
59+
60+
:::
61+
5662
### `.env` ファイル {#env-files}
5763
5864
Vite は、[環境ディレクトリー](/config/shared-options.md#envdir)にある以下のファイルから追加の環境変数を読み込むために [dotenv](https://github.com/motdotla/dotenv) を利用します。
@@ -93,14 +99,6 @@ NEW_KEY2=test\$foo # test$foo
9399
NEW_KEY3=test$KEY # test123
94100
```
95101
96-
:::warning SECURITY NOTES
97-
98-
- `.env.*.local` ファイルはローカル限定で、センシティブな変数を含めることができます。git にチェックインされるのを防ぐために、`.gitignore``*.local` を追加すべきです。
99-
100-
- Vite のソースコードに公開される変数は最終的にクライアントバンドルに入るので、`VITE_*` 変数はセンシティブな情報を*含まない*ようにすべきです。
101-
102-
:::
103-
104102
::: details 変数の逆順展開
105103
106104
Vite は変数を逆順で展開することをサポートしています。
@@ -118,6 +116,12 @@ VITE_BAR=bar
118116
119117
:::
120118
119+
:::warning ローカル `.env` ファイルの無視
120+
121+
`.env.*.local` ファイルはローカル限定で、センシティブな変数を含む可能性があります。git にチェックインされるのを防ぐために、`.gitignore``*.local` を追加すべきです。
122+
123+
:::
124+
121125
## TypeScript 用の自動補完
122126
123127
デフォルトで Vite は [`vite/client.d.ts`](https://github.com/vitejs/vite/blob/main/packages/vite/client.d.ts) で `import.meta.env` のための型定義を提供します。`.env.[mode]` ファイルで自前の環境変数を定義できますが、`VITE_` で始まるユーザー定義の環境変数に対する TypeScript の自動補完が欲しくなるかもしれません。

0 commit comments

Comments
 (0)