機密情報が含まれている可能性がある .git フォルダーを公開しないでください。
Git を介してアプリケーションを初期化してデプロイすると、必要な情報を含む
.git
フォルダーが作成されます。 Web サーバーまたはフロントエンドを介してインターネット経由で
.git
フォルダーにアクセスできる場合、機密データが漏洩する可能性があります。
さらに悪いことに、認証情報が構成ファイルに保存されている場合は、
これらのツールを使用して、GitHub リポジトリで認証情報を検索します。
Web アプリケーションのどこかに .git があるかどうかわからない場合は、 OpenVAS 、 Gitjacker 、またはここで説明したその他のセキュリティ脆弱性スキャナーを使用できます。
Gitjacker は .git ディレクトリを検出するだけではありません。ディレクトリ全体がダウンロードされます。
これに対処するには複数の方法があります。
サーバー上に
.git
フォルダーを保持しないことも、リクエストをブロックすることもできます。リクエストのブロックは非常に簡単で、使用する Web サーバーに応じてこれを実現できます。

Nginx
Nginx を使用している場合は、
nginx.conf
ファイルに次の
location
ディレクティブを追加できます。
location ~ /\.git {
deny all;
}
上記は、.git を含むリクエストがあるたびに、以下のように 403 をスローするように Nginx に指示します。
攻撃者にサーバー上に .git があると思われたくない場合は、404 を返すこともできます。
location ~ /\.git {
return 404;
}
これにより、以下のように HTTP ステータス コード 404 が返されます。
どちらを選択する場合でも、構成を変更した後は Nginx を再起動することを忘れないでください。
service nginx restart

アパッチHTTP
Apache Webサーバーで
.git
をブロックする方法を見てみましょう。これを実現するには、
RedirectMatch
または
DirectoryMatch
を使用できます。
RedirectMatch を使用するのがおそらく最も簡単です。
httpd.conf
または
.htaccess
ファイルに次の内容を追加するだけです。
RedirectMatch 404 /\.git
上記の例では、誰かが .git にアクセスすると 404 がスローされ、次の例では 403 が表示されます。
RedirectMatch 403 /\.git
次に、
httpd.conf
ファイルに次の行を追加して、DirectoryMatch ルールを使用してみます。
<DirectoryMatch "^/.*/\.git/">
Deny from all
</Directorymatch>
Apache を再起動し、.git を含む URL にアクセスします。 403 Forbidden エラーが表示されます。

クラウドフレア
これは私のお気に入りです。リクエストは端でブロックしてください!
ただし、ご想像のとおり、これはサイトが Cloudflare ネットワークを通じて高速化されている場合にのみ機能します。
- Cloudflareにログインする
- [ファイアウォール]タブに移動 >> ファイアウォール ルール >> ファイアウォール ルールを作成します
- ルール名を指定します – Block GIT
- フィールドを選択 – URI
- 演算子 – を含む
- 値 – .git
- アクションを選択 – ブロックして保存
すべてのCloudflareデータセンターにルールが伝播されるまでに約1分かかります。完了したら、残りは Cloudflare が実行します。
注意すべき点は、Cloudflare ファイアウォール ルールを実装してブロックする場合、オリジンが公開されていないことを確認する必要があることです。それ以外の場合、攻撃者は Cloudflare をバイパスして .git ファイルにアクセスする可能性があります。

結論
上記が .git ディレクトリを公開するリスクを軽減するのに役立つことを願っています。
