HTML コメントはブラウザ画面に出ないだけで、HTTP レスポンスには含まれて送信されている点が見落とされがちです。実際に過去に発生した情報漏洩事例:
本番デプロイ時にデバッグ用 API キーをコメントに残したまま公開してしまい、悪用された
「TODO: 後で本番DBに繋ぐ」のコメントから内部 DB ホスト名が漏洩
古いプロモーションコードをコメントアウトして残していたら、ソース表示で発見されて利用された
これらを防ぐためにも、本番ビルドではコメントを minify ツールで除去するのが標準的な運用です。Webpack / Vite / Next.js などのモダンビルドツールは既定でコメント除去が有効になっていることが多いですが、サーバサイドレンダリングの HTML 文字列内のコメントは別途対応が必要です。
テンプレートエンジンのコメントとの違い
EJS / Blade / Twig などのテンプレートエンジンには、サーバ側でのみ消えるコメントがあります。これらは出力 HTML にも残らないため、機密情報を書いても漏洩しません(ただしソースコードに残ることは要注意)。
{# Twig: 出力されないコメント。安全 #}
FAQ
Q: コメントの中に HTML タグを書ける?
A: 書けます。タグはコメント内では単なるテキストとして扱われます。ただし -- が含まれているとそこで終端扱いになる点に注意。
Q: コメントは何文字まで書ける?
A: HTML 仕様には文字数制限はありません。ただしファイルサイズが増えてダウンロードが遅くなるので、本番では minify するべきです。
Q: ブラウザに表示しないだけで通信されるのでは?
A: その通りです。コメントもサーバから送信される HTML の一部。「画面に出ないから安心」ではなく、ソースは誰でも見られる前提で書きましょう。