AIが生成したコードをデプロイする前に確認すべきセキュリティチェック7選
バイブコーディング・AIコード生成で素早く作ったサービスが見落としがちなセキュリティホール7つと、デプロイ前に5分でチェックする方法。
AIコーディングツールはアイデアを一日でサービスに変えてくれます。しかし速い分、セキュリティはデフォルトで安全ではありません。 開発者が一人だけ、あるいは開発者が全くいないチームなら尚更です。デプロイ前に以下の7つを確認するだけで、よくある事故の大半を防げます。
1. ハードコードされた鍵・パスワード
APIキー、データベースのパスワード、トークンがコードにそのまま埋め込まれていないか確認してください。AIは「とりあえず動く」コードを作るのが得意ですが、しばしば鍵をソースに直接書き込みます。このコードが公開リポジトリに上がると、数分以内に自動ボットが鍵を収集します。
- 鍵は環境変数(
.env)に分離し、.envは必ず.gitignoreに追加する - すでにコミットしてしまった場合は鍵を破棄して再発行 — 履歴から消しても、すでに露出したものとみなす
2. クライアントに露出した秘密情報
ブラウザで実行されるコード(フロントエンド)に入った値は誰でも見ることができます。 管理者用の鍵をフロントエンドに入れてはいけません。NEXT_PUBLIC_のような接頭辞が付いた環境変数に機密な値がないか確認してください。
3. データアクセス権限(認可)
ログインはできたけれど、他人のデータが見えてしまってはいませんか? URLのidを変えるだけで他のユーザーの情報が見えてしまう問題(IDOR)は、AI生成コードで非常によくあります。「自分のものだけが見えるか」を必ずテストしてください。
4. データベースの行レベルセキュリティ(RLS)
BaaS(ノーコード/バックエンドサービス)を使っているなら、テーブルごとにアクセスルールが有効になっているか確認してください。デフォルトが「全体公開」になっている場合があります。匿名ユーザーがテーブルを丸ごと読み取れるか直接確認するのが安全です。
5. 脆弱なライブラリ
プロジェクトが使用するオープンソースパッケージの中に、既知の脆弱性(CVE)があるバージョンが混ざっている可能性があります。最新の安全なバージョンに上げるだけで多くのリスクが消えます。
6. 入力値への信頼
ユーザーが入力した値をそのままデータベースクエリやシステムコマンドに渡すと、インジェクション攻撃にさらされます。「ユーザー入力は常に疑う」を基本原則にしてください。
7. デプロイ後も継続的にチェック
一度安全だったからといって終わりではありません。コードを修正するたびに新しい穴ができる可能性があります。プッシュのたびに自動でチェックされるようパイプラインに組み込めば、人が忘れても安全網が残ります。
この7つはツールなしでも確認できますが、数百ファイルを人手で一つずつ見るのは困難です。WhiteHat CodeはGitHubリポジトリを連携すると上記の項目を自動でスキャンし、問題の場所と直し方を教えてくれます。自動スキャンは無料です。