Mistake #44 : Hardcoded Credentials

玄関マットの下の鍵

「ローカル開発環境だから大丈夫」。
そう言って、あなたはパスワードをコードに書きました。
しかし、そのコードはGitHubにプッシュされ、世界中の泥棒(ボット)が
あなたの「玄関マットの下」を覗きに来ます。

🔑 防犯意識診断
  • GitHubのPublicリポジトリに、間違えてAWSキーを上げたことがある
  • `const API_KEY = "12345..."` とコードに直接書いている
  • `.env` ファイルもGitで管理(コミット)している
  • 退職したエンジニアが使っていたパスワードを、変更せずに使っている
⚠️ 警告:あなたの家の鍵は、路上に落ちています。
不正利用による数千万円のクラウド請求が、明日届くかもしれません。

01. 悪魔はコードに潜む

// DB Connection
const db = new Database({
  host: "localhost",
  password: "P@ssw0rd1234" // ← DO NOT COMMIT THIS!
});

ハードコード(ソースコードへの直接記述)は、最も初歩的かつ致命的なセキュリティ・アンチパターンです。
Gitのようなバージョン管理システムを使うと、そのコードは履歴として永遠に残ります。
たとえ後で消したとしても、過去のコミットログを漁れば、パスワードは簡単に見つかります。
攻撃者は、GitHub上の公開コードを24時間監視し、こうした「うっかりミス」を秒単位で探しています。

コードとは
「誰でも読める場所」だと思え。
そこに秘密を書いてはいけない。

02. 環境変数を使え

秘密の情報は、コードの外(環境変数)に置くのが鉄則です。
ローカル開発では `.env` ファイルを使い、本番環境ではサーバーの設定機能を使います。
そして、`.env` ファイルは必ず `.gitignore` に追加し、絶対にリポジトリに含めないことです。
「構成(コード)」と「設定(パスワード)」を分離する。
これがThe Twelve-Factor Appでも提唱されている、モダンなアプリ開発の基本です。

03. 何かが漏れたら、全てを変えろ

もし、誤ってパスワードをコミットしてしまったら?
「すぐに消して上書き」では不十分です。すでに誰かに見られている前提で動くべきです。
該当するパスワード、APIキーを「無効化」し、新しいものを発行してください。
鍵を落としたら、新しい鍵を作るのではなく、シリンダーごと交換する。
それが唯一の安全策です。

執筆:DevSecOpsチーム

「開発スピード」と「セキュリティ」を両立させる専門家。
開発フローの中に自動検知ツールを組み込み、事故を未然に防ぐ仕組みを作る。