.env ファイル(環境変数ファイル)とは
.env ファイルは、アプリの設定値をまとめて書いておくファイルです。環境変数ファイルとも呼ばれます。
ひとことで言えば「アプリの合鍵がまとめて書かれやすいファイル」です。ファイルそのものは普通の道具ですが、置き場所を間違えると、鍵の束をそのまま渡すことになります。
設定値を 1 行に 1 つ書いたファイル
多くのアプリは、接続先やパスワードなどの設定値を「環境変数」という形で受け取ります。.env はそれを 1 か所に書いておくファイルで、Node.js 向けの部品 dotenv は、.env に書いた環境変数をアプリに読み込ませるものだと説明されています。 出典を開く確認 2026-09-26dotenv(Node.js 向けの部品・GitHub の README)原文
Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env.
中身は「名前=値」の行の並びです(値は見本)。
APP_URL=https://example.com
DB_PASSWORD=(データベースのパスワード)
MAIL_API_KEY=(メール配信サービスの API キー)
Palo Alto Networks の調査チーム Unit 42 は、こうしたファイルにはクラウドのアクセスキーや SaaS(インターネット経由で使うサービス)の API キー、データベースのログイン情報がそのまま書かれていることが多いと書いています。報告した作戦では攻撃者がそれを最初の侵入に使っており、.env を公開してはいけないとしています。 出典を開く確認 2026-09-26Palo Alto Networks Unit 42(2024-08-15・漏れた環境変数を使ったクラウドでの大規模な恐喝の報告)原文
Due to the security risks associated with authentication data stored inside .env files, organizations should follow security best practices to never expose environment files publicly. Environment files allow users to define configuration variables used within applications and platforms. These files often contain secrets such as hard-coded cloud provider access keys, software-as-a-service (SaaS) API keys and database login information then used by the threat actor for initial access.
| 書かれることが多い値 | 何の鍵か |
|---|---|
| クラウドのアクセスキー | クラウドの設定やデータを操作する鍵 |
| SaaS の API キー | メール配信・決済・AI などのサービスを呼び出す鍵 |
| データベースのログイン情報 | 業務データそのものに入る鍵 |
鍵を渡すと相手に何ができるかは API キーとは何か にまとめてあります。
置いてはいけない 2 つの場所
1 つ目は、ウェブで公開しているフォルダです。そこに置いたファイルは、アドレスを知っていれば誰でも開けます。.env も同じで、たとえばサイトのアドレスの末尾に /.env を付けるだけで取れてしまいます。Unit 42 は 2024 年 8 月、攻撃者が 2 億 3,000 万を超える対象を調べ、11 万のドメインを狙って、.env から 9 万を超える変数を集めた作戦を報告しています。そのうち 7,000 は、組織のクラウドサービスの変数でした。 出典を開く確認 2026-09-26Palo Alto Networks Unit 42(2024-08-15・漏れた環境変数を使ったクラウドでの大規模な恐喝の報告)原文
used that groundwork to scan more than 230 million unique targets for sensitive information. This campaign targeted 110,000 domains resulting in over 90,000 unique variables in the .env files. Of those variables, 7,000 belonged to organizations' cloud services
私たちのサイトにも、.env を探しに来る要求が届いています。対象は renkeimap.jp と画像・開発用の置き場で、2026 年 9 月 19〜25 日の 7 日間に届いた、秘密や設定を探す要求 1,634 件のうち、半分以上が .env でした。どれも入口で拒否したか、ファイルがそもそも無く、中身を返した要求は 0 件でした。内訳は 「自動トラフィック急増」の警告の読み方 に、作戦の中身と、名前を変えても防げない理由は 鍵の置き場所と守りの順番 にまとめています。
2 つ目は Git(プログラムの変更の履歴を管理する仕組み)です。PHP のフレームワーク Laravel の公式ドキュメントは、.env をソース管理に入れてはいけないとしています。リポジトリに侵入されると、書かれた認証情報がそのまま漏れるためです。 出典を開く確認 2026-09-26 出典を開く確認 2026-09-26Laravel(公式ドキュメント 12.x・Configuration)原文
Your .env file should not be committed to your application's source control, since each developer / server using your application could require a different environment configuration. Furthermore, this would be a security risk in the event an intruder gains access to your source control repository, since any sensitive credentials would get exposed.
Cloudflare(Workers のドキュメント・Secrets)原文
The .dev.vars and .env files should not be committed to git. Add .dev.vars* and .env* to your project's .gitignore file.
Git は変更の履歴をまるごと持っているので、一度入れた .env は、あとで消しても過去の履歴に残ります。セキュリティ企業の Sysdig は、ウェブサーバーの設定の誤りで .git のフォルダ(Git が履歴をしまう場所)が外から見えると、コミットの履歴ごと取られ、コミットしたパスワードや API キーも含まれうると書いています。 出典を開く確認 2026-09-26Sysdig(2024-10-30・公開された Git の設定ファイルを狙った EMERALDWHALE 作戦の報告)原文
The .git directory contains all information required for version control, including the complete commit history, configuration files, branches, and references. If the .git directory is exposed, attackers can retrieve valuable data about the repository's history, structure, and sensitive project information. This includes commit messages, usernames, email addresses, and passwords or API keys if the repository requires them or if they were committed. One frequent method of exposing the .git directory is through web server misconfigurations.
| 置き場所 | 何が起きるか | 備え |
|---|---|---|
| ウェブの公開フォルダ | アドレスを知っていれば誰でも取れる | 公開フォルダの外に置く |
| Git のリポジトリ | リポジトリを読める人全員に渡る。消しても履歴に残る | .gitignore で外す |
| 公開フォルダの .git | 履歴ごと取られ、過去にコミットした鍵も含まれうる | .git を公開しない |
すでに .env が外から取れる状態だった、または Git に入っていたと分かったら、ファイルを移すだけでは足りません。書かれていた鍵は漏れた前提で、発行元で新しい鍵を発行し、古い鍵を無効にします。
- .env に書かずに済ませる方法は シークレット管理とは にまとめてあります
- 漏れた鍵がどれだけ使われ続けるかは API キーは実際どう漏れるのか にまとめてあります