ある研究によると、AIが生成したコードは人間が書いたコードよりも1.7倍大きな問題を抱える可能性が高く、セキュリティ脆弱性に対する傾向は2.74倍高いことが分かりました。Cursor、Claude Code、またはGitHub Copilotで何かを構築した場合、プロジェクトには最も一般的な5つのセキュリティホールのうち少なくとも1つがある可能性が高いです。それらが何であるか、そしてそれらを見つける方法は次のとおりです。

クイックファクト
  • 45% のAI生成コードには少なくとも1つのセキュリティ脆弱性が含まれている
  • 1.7倍 人間が書いたコードと比べて大きな問題を抱ける可能性が高い
  • 2.74倍 セキュリティ脆弱性に対してより傾向が強い
  • 最も一般的: ハードコーディングされたAPIキー、入力値検証の不足、行レベルセキュリティなし
  • 監査時間: 典型的なvibe codedプロジェクトで2~3時間
  • 最終確認: 2026年4月

AIコードが脆弱である理由

AIコーディングツールは「動くか」を最適化します。「安全か」ではなく。Cursorに「ユーザー認証を追加する」と言うと、ユーザーを認証するコードが生成されます。レート制限、入力サニタイゼーション、CSRF保護、またはセキュアセッション管理を自動的には追加しません。それらのことを求めていないからです。

AIはあなたが説明したことを正確に書きます。セキュリティには、自然に考えないようなことを説明する必要があります — エッジケース、悪意のある入力、不正アクセスパターン。プロンプトにない場合、コードにもありません。

最も一般的な5つの脆弱性

1. フロントエンドコードにハードコーディングされたAPIキー。 AIは頻繁にAPIキーをクライアント側のJavaScriptやReactコンポーネントに直接配置します。誰でもブラウザのDevToolsを開いて見ることができます。修正: すべてのキーを環境変数(.envファイル)に移動し、サーバー側でのみアクセスしてください。時間: 15分。

2. データベースに行レベルセキュリティがない。 Supabaseを使用している場合(vibe codingでは一般的)、AI生成コードは認証された全ユーザーに他のすべてのユーザーのデータへのアクセスを与えることがよくあります。修正: 行レベルセキュリティを有効にし、ユーザーごとのポリシーを追加してください。時間: 30分。

3. サーバー側の入力値検証がない。 フォームはスクリプト、サイズ超過のペイロード、SQLインジェクションの試みなど、何でも受け入れます。AIはクライアント側検証(ユーザーはバイパスできる)を追加しますが、サーバー側検証はスキップします。修正: 全APIエンドポイントにZodスキーマまたは同様の検証を追加してください。時間: エンドポイントごとに30分。

4. レート制限がない。 誰でも1秒あたり1,000回APIをヒットできます。スロットリングなし、悪用への保護なし。修正: Upstash Redisまたは同様のもので、レート制限を追加してください。時間: 20分。

5. 保護されていないルート。 ダッシュボードページ、管理者パネル、ユーザーデータエンドポイントは、ユーザーがログインしているかを確認することなく読み込まれます。修正: 保護されたすべてのルートに認証ミドルウェアを追加してください。時間: 15分。

これから価値を得ていますか? 毎週AI構築プロジェクトのセキュリティガイドを公開しています。安全に構築する読者に参加する →

プロジェクトを監査する方法

AIコーディングツールで構築されたプロジェクトについて、このチェックリストを実行してください:

コードベース全体でハードコーディングされたキーを検索します。プロジェクトディレクトリで以下を実行: grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" . フロントエンドファイルでの一致は重大な脆弱性です。

入力値検証について、すべてのAPIエンドポイントをチェックしてください。各APIルートファイルを開いてください。検証なしでreq.bodyを直接使用している場合、脆弱です。

データベースセキュリティを確認してください。Supabaseを使用している場合、[認証] → [ポリシー]タブを確認してください。RLSポリシーがない場合、すべてのユーザーが他のすべてのユーザーのデータを見ることができます。

すべてのページで認証をテストしてください。ブラウザをシークレットモード(ログインしていない)で開き、アプリのすべてのページに移動してください。ダッシュボードまたはユーザー固有のページが読み込まれる場合、そのルートは保護されていません。

レート制限を確認してください。シンプルなスクリプトを使用してAPIエンドポイントを100回連続でヒットしてみてください。100回すべて成功する場合、レート制限がありません。

完全なセキュリティチェックリストについては、vibe codedアプリをセキュアにするための完全ガイドを参照してください。最も一般的な間違いとその修正方法については、すべてのvibe coderが犯す5つのセキュリティ間違いを読んでください。

考え方の転換

AIは動くコードを書きます。コードが安全であることを確保する必要があります。これら2つの異なるスキルです。AIコーディングツールへのすべてのプロンプトには、機能要件と一緒にセキュリティ要件が含まれるべきです。「レート制限、入力値検証、保護されたルートを備えたユーザー認証を追加する」は「ユーザー認証を追加する」よりも劇的により安全なコードを生成します。

当社のPrompt Optimizerは、これらのセキュリティ仕様をいかなるコーディングプロンプトにも自動的に追加するのに役立ちます。

これは毎週私たちがすることです。 AIツール、ワークフロー、正直な見解の1つの深い掘り下げ — ハイプなし、フィラーなし。私たちに参加 →

開示: この記事のいくつかのリンクはアフィリエイトリンクです。私たちは個人的にテストし、定期的に使用するツールのみを推奨します。完全な開示ポリシーを参照してください。