AIで作ったアプリの公開前セキュリティチェックリスト:見落としやすい10項目
執筆:IDEAVALU運営 · 更新:
AIに書かせたコードは「動くこと」を優先するため、鍵の置き場所やデータの守り方が後回しになりがちです。公開前に確認したいのは、秘密のAPIキーがブラウザに届いていないか、データベースが他人に読まれないか、ログインが必要な処理をサーバー側で守っているか、の3点です。この記事では、それを含む10項目を確認方法つきで並べます。
公開前の10項目
上から順に、被害が大きく見落としやすいものです。リンク先に、それぞれの確認方法と直し方があります。
| 項目 | 確認すること | 確認方法 |
|---|---|---|
| 1. 秘密のAPIキー | OpenAI・Stripe・service_role などのキーがブラウザの JS に含まれていない | ビルド成果物を検索する、IDEAVALU の診断を使う |
| 2. データベースのアクセス制御 | Supabase の RLS、Firebase のセキュリティルールで、他人の行を読めない・書けない | RLS が無効なテーブルを SQL で一覧にする |
| 3. サーバー側の権限確認 | ログインが必要な API・Server Action で、サーバー側でもユーザーを確認している | 画面を通さず、ログインせずに API を直接呼んで拒否されるか試す |
| 4. 他人のデータの取得 | URL や API の ID を書き換えて、他人のデータを取れない | テスト用のアカウントを2つ作り、片方の ID でもう片方のデータを開けないか試す |
| 5. 外部APIの利用料の上限 | AI API などに使用量の上限と、1ユーザーあたりの回数制限がある | 各サービスの管理画面で上限を設定し、短時間に連続で呼んで制限されるか試す |
| 6. HTTPS の強制 | http から https へ転送され、HSTS が付いている | curl でヘッダーを確認する |
| 7. セキュリティヘッダー | クリックジャッキング対策・nosniff・Referrer-Policy などがある | curl でヘッダーを確認する |
| 8. ログイン情報の保存 | ログイン用の Cookie に Secure・HttpOnly・SameSite が付いている | ブラウザの開発者ツールで Cookie を確認する |
| 9. 依存パッケージ | 既知の脆弱性があるパッケージを使っていない | npm audit を実行する、GitHub の Dependabot を有効にする |
| 10. エラー表示とログ | エラー画面やログに、スタックトレースや秘密の値が出ていない | 本番環境でわざと存在しない URL や不正な入力を送って表示を確認する |
AIで作ったアプリで事故が起きやすい理由
AIは、指示された機能が動くことを優先してコードを書きます。たとえば「OpenAI で文章を生成して」と頼むと、ブラウザから直接 API を呼ぶコードになり、キーも一緒にブラウザへ配られることがあります。Supabase のテーブル作成でも、RLS を有効にしないまま動く状態で止まることがあります。
どれも画面上は正しく動くため、作った本人が気づきにくいのが特徴です。公開前に、動作確認とは別にこのチェックリストで確認してください。
AIエージェントに確認を頼む
Claude Code や Codex などのコーディングエージェントに、リポジトリ全体の確認を頼むこともできます。次の文面をそのまま貼り付けて使えます。
コーディングエージェント向けの依頼文
このリポジトリを公開前のセキュリティの観点で確認してください。コードは変更せず、問題と根拠(ファイルと行)を一覧にしてください。 1. 秘密の APIキーやトークンが、ブラウザに届くコードや NEXT_PUBLIC_・VITE_ で始まる環境変数に入っていないか 2. Supabase の RLS(または Firebase のセキュリティルール)が全テーブルで有効で、他人の行を読み書きできないか 3. ログインが必要な API・Server Action で、サーバー側でもユーザーと権限を確認しているか 4. URL や API の ID を書き換えて、他人のデータを取得・変更できないか 5. 外部 API(AI など)の呼び出しに、回数制限や上限があるか 6. エラーやログに、秘密の値やスタックトレースを出していないか
外から見える項目は、まとめて診断できます
1・6・7・8 と、メールのなりすまし対策は、IDEAVALU の無料セキュリティ診断で URL を入れるだけで確認できます。2〜5・9・10 は外からは確認できないため、上の方法か AIエージェントで確認してください。
よくある質問
- Lovable や Bolt、v0 などで作ったアプリも対象ですか?
- 対象です。どのツールで作ったかに関係なく、公開したアプリは同じ観点で確認が必要です。特に、データベースや認証をツールが自動で用意する場合は、アクセス制御の設定がどうなっているかを確認してください。
- 個人開発の小さなアプリでも確認したほうがよいですか?
- 確認をおすすめします。APIキーが漏れると、利用者が少なくても第三者に使われて利用料を請求されることがあります。データベースの設定ミスは、登録したユーザーの情報漏えいにつながります。