.gitや.envが公開されていないか確認する方法と、見つかった時の対処

この記事で分かること

  • .git フォルダや .env ファイルが公開されると、何が起きるか
  • 自分のサイトで、公開されていないかを確認する方法
  • Apache、nginxで、外から見えないようにする設定
  • すでに公開されていた場合に、最初に行うこと

要点は三つです。公開されたファイルは、見られたものとして扱うこと。遮断の設定より先に、中に書かれていた鍵やパスワードを差し替えること。そして、設定だけでなく、公開する場所に置かない運用にすることです。

.gitと.envが公開されると何が起きるか

.git フォルダは、Gitがバージョン管理の履歴を保存する場所です。Webサーバーの公開フォルダの中に残っていると、外部の人がそこから履歴を取り出し、ソースコードの全体を復元できてしまうことがあります。過去に削除した設定ファイルや、コミットしてしまったパスワードも、履歴の中に残っています。

.env は、LaravelなどのフレームワークやNode.jsのアプリで、データベースのパスワード、APIキー、アプリの暗号鍵などを書いておくファイルです。外から読めると、そこに書かれた情報がそのまま流出します。

公開されたもの起きうること
.git フォルダソースコードの流出、履歴に残った鍵やパスワードの流出、内部の構造の把握
.envデータベースやAPIの認証情報の流出、それを使った不正アクセスや課金
バックアップ(.sql、.zip、.bak)データベースの全件や設定ファイルの流出

自分のサイトで確認する方法

ブラウザで、次のようなURLを開いてみます。ご自身が管理しているサイトに限って行ってください。

  • https://example.com/.git/HEAD
  • https://example.com/.git/config
  • https://example.com/.env

.git/HEAD を開いて ref: refs/heads/main のような1行が表示されたら、公開されています。.env に APP_KEY= や DB_PASSWORD= のような行が表示された場合も同様です。「403 Forbidden」や「404 Not Found」であれば、少なくともその場所からは取得できません。

コマンドでは、次のように状態コードを確認できます。

curl -s -o /dev/null -w "%{http_code}n" https://example.com/.git/HEAD
curl -s -o /dev/null -w "%{http_code}n" https://example.com/.env

注意したいのは、「200」が返っても、中身が本物とは限らないことです。存在しないURLにも、トップページなどの同じ内容を「200」で返すサイトがあります。中身を見て判断してください。

外から見えないようにする設定

Apache(.htaccess または設定ファイル)

<FilesMatch "^.(?!well-known)">
    Require all denied
</FilesMatch>
RedirectMatch 404 /.git

1つ目は、ドットで始まるファイルを拒否します(.well-known は除きます)。2つ目は、.git を含むURLに404を返します。

nginx

location ~ /.(?!well-known) {
    deny all;
    return 404;
}

設定を変えたら、nginx -t で構文を確かめてから、reloadします。

根本の対策: 公開する場所に置かない

遮断の設定は、書き間違いや、サーバーの移行で消えてしまうことがあります。根本の対策は、そもそも公開フォルダの中に置かないことです。

  • Laravelなら、公開するのは public フォルダだけにし、.env はその外に置かれる構成にします。
  • Gitのリポジトリを、公開フォルダの直下で git clone して運用しません。ビルドした成果物だけを配置します。
  • バックアップやSQLのダンプは、公開フォルダに残さず、公開フォルダの外に保存します。

すでに公開されていた場合の対処

見つかったら、遮断の設定より先に、次の順で進めます。

  1. 書かれていた鍵やパスワードを差し替える: データベースのパスワード、APIキー、メールやストレージの認証情報、アプリの鍵(Laravelの APP_KEY など)です。Gitの履歴に残っていたものも含めます。公開されていた期間が分からない場合は、全て流出したものとして扱います。
  2. 外から見えないようにする: 上の設定を入れ、実際にURLを開いて「404」または「403」になることを確認します。
  3. アクセスの記録を確認する: サーバーのアクセスログで、該当のURL(.git、.env)へのアクセスが、いつから、どこから行われたかを確認します。見知らぬアクセスがあれば、不正利用の有無も調べます。
  4. 被害の有無を確かめる: データベースの不審な操作、不明な管理者アカウント、身に覚えのない請求などを確認します。
  5. 再発を防ぐ: 配置の手順を見直し、公開フォルダに置かない構成にします。

定期的に確認する

一度直しても、サーバーの入れ替えや、デプロイ方法の変更で、再び公開されることがあります。公開前や更新後に、今回のようなURLを確認する習慣をつけてください。Webサイト セキュリティチェッカー「Security Checker X」は、URLを入力するだけで、.git、.env、バックアップファイルなど、公開されていてはいけない主なファイルを確認できます。登録は不要です。

よくある質問

.gitが見えているだけで、本当に危険ですか?

危険です。公開された .git フォルダからは、ソースコードの全体と、過去の履歴が取り出せる場合があります。履歴の中には、すでに削除した設定ファイルや、うっかりコミットしたパスワードが残っていることがあります。

遮断の設定を入れれば、それで安心ですか?

遮断は、これ以上の流出を防ぐための処置です。すでに取得された可能性がある情報は、元に戻せません。書かれていた鍵やパスワードの差し替えを、先に行ってください。

自分のサイトでなければ、確認してもよいですか?

他人のサイトのURLに対する確認は、管理者の許可がない限り、避けてください。確認は、ご自身で管理しているサイトに限って行います。

WordPressでも、.gitや.envの確認は必要ですか?

必要です。WordPress本体にはありませんが、テーマやプラグインを開発している場合や、サーバー上で Git を使って運用している場合は、.git が残ることがあります。wp-config.php のバックアップ(wp-config.php.bak など)も、同様に確認してください。

関連記事

関連する用語

サイトの設定を無料で確認する

この記事の内容を、自分のサイトで確かめたい時は、Webサイト セキュリティチェッカー「Security Checker X」をお使いください。URLを入力するだけで、登録なしで診断できます。

デジタルマーケティング事業部 統括マネージャー

略歴:京都大学情報学研究科知能情報学専攻修士課程修了後、日経大手インターネットショッピングモールの開発部でエンジニアとしてシステム開発・運用に従事。同社新規モバイル事業の立ち上げに開発プロジェクトマネージャー、兼プロダクトマネージャーとして参画。その後、外資系大手製薬メーカーのデジタルマーケティング部門でシニアアソシエイトとして従事した後、2020年にエスライン・テクノロジーズのデジタルマーケティング事業部統括マネージャーに就任。カスタマーファーストでデジタルマーケティングの役立つ情報を日々発信中。

コメント

この記事へのトラックバックはありません。

【MALINE】総合デジタルマーケティングツール
【特別価格】Digicert VMC
NEWS
  1. 1

    【NEWS】旅行比較サイト『TRAVEL HUB(トラベルハブ)』サービス提供開始のお知らせ

  2. 2

    オフィス移転のお知らせ

  3. 3

    【MALINE】マリン株式会社設立のお知らせ

  4. 4

    無料で使える「Excel版 一斉メール配信ツール」提供開始のお知らせ ~SMTP設定だけで今すぐメール一括送信~

  5. 5

    中小企業向けDXプラットフォーム『Hirameki 7』SEO/MEO支援オプション提供開始。Hirameki 7ご利用者様の集客効果を最大化!

カレンダーから記事を探す
2026年10月
月 火 水 木 金 土 日
 1234
567891011
12131415161718
19202122232425
262728293031  
SEO検索順位チェッカー
Googleマップ/MEO順位チェックツール
【無料】メールアドレス生存確認ツール
【無料】Excel一斉メール送信ツール
メールアドレス漏洩・流出チェックツール
メールドメインブラックリスト判定ツール
DMARC/SPF/DKIM診断ツール
IPアドレス位置・住所特定ツール
自分のIPアドレス確認ツール
驚愕効果のSEO対策

関連記事