Webサービス公開前の必須セキュリティチェックリスト
これまでの連載の締めくくりとして、サービスの公開前に確認できる簡易的なセキュリティチェックリストを用意しました。各項目を確認しつつ、自分の開発しているアプリケーションに合わせてカスタマイズしたり深掘りしてみることでトラブルを防げるはずです。
※このチェックリストはcatnose99さんの記事をベースに再構成したものです。オリジナルの記事には、サービス運営にあたってさらに包括的な内容が含まれております。ぜひそちらもチェックしてみてください。
Phase 1:設計(データ分類と最小化)
-
データ分類:PII(個人識別用情報)決済情報など機密データを特定し分類したか?
- 不要な個人情報を持たないこと
Phase 2:環境設定(機密情報の管理)
-
機密情報の管理
-
.envは.gitignoreに追加されていますか? - APIキーやパスワードのハードコーディングはないか?
-
-
本番環境
- デバッグモード無効化
- エラー詳細非表示
- 不要ファイル削除
Phase 3:アクセス制御(認証・認可の徹底)
-
認証
- 退会/メールアドレス変更などで、直前のログインを必須にしているか?
-
CSRF対策:トークン実装またはCookieに
SameSite=Strict/Lax属性設定
-
クラウドサービスの設定見直し
-
Firebase:
allow read: if true;を使わない - Supabase:RLS有効化
- AWS S3:パブリックアクセスの見直し
-
Firebase:
-
API設定
-
CORS:
Access-Control-Allow-Originにワイルドカード不使用 -
個人データAPIに
Cache-Control: private, no-store - セキュリティヘッダ(HSTS, CSP, X-Frame-Options)設定
-
CORS:
Phase 4:コード対策(インジェクション・XSS対策)
- SQLインジェクション:ORM/プリペアドステートメント使用(文字列連結禁止)
-
XSS対策
- ユーザー入力は自動エスケープ(Reactなど)
-
dangerouslySetInnerHTML使用禁止 -
Cookieに
HttpOnly属性設定(緩和策)
-
LLM利用時
- プロンプトインジェクション:ユーザー入力とシステムプロンプトを分離
- 出力処理:LLM出力も「信頼できない入力」として扱い検証
Phase 5:依存関係(サプライチェーンリスクの排除)
- 脆弱性スキャン:Dependabot/TrivyなどでCVEチェック
- 不要なパッケージの削除
Phase 6:運用準備(監視と対応体制)
-
テスト
- ロール別、各ページでのアクセス権チェック
- SAST/DAST実行
- Critical/High警告を解決
- ロギング:構造化ログの収集・保管体制
- インシデント対応:ログ確認手順、ロールバック手順を準備
まとめ:自信を持ってAIと共に開発するために
AIはコーディングを補助する強力な「増幅器」です。しかしそれは、良い実践だけでなく、悪い実践(脆弱性)も増幅することを意味します。「バイブコーディング」の勢いのまま、AIの提案を鵜呑みにすると、AIが学習した古く脆弱なコードや、文脈を無視した危険な設定がそのまま持ち込まれてしまいます。
このAI時代に求められるのは、単なる「コーダー」ではなく、AIの生成物を厳しく評価する「監督者」としての視点です。そして、その土台となるのが、揺るぎないセキュリティの基礎知識です。
「監督者」として歩み出すための実践ステップ
AIを安全な「副操縦士」とするために、今日から以下のステップを実行に移しましょう。
- 習慣化する(「なぜ?」と問いかける):AIが生成したコードに対し、「なぜこのコードが安全か?」と自問する習慣をつけます。その答えに詰まるなら、そこが最初の危険信号です。
- 知識を体系化する(「学ぶ」):「なぜ危険か」を知るために、セキュリティ知識の体系的な学習が不可欠です。まずは「OWASP Top 10」を読み、攻撃者が何を狙っているのかを理解することから始めましょう。
- プロセス化する(「試す」そして「防ぐ」):学んだ知識を実践に移します。自らツールを使ったり、開発プロセスに導入し自動化することを目指してください。継続的な改善と監視によってAIによる開発生産性の向上を享受しつつ、安全なアプリケーション開発ができるはずです。
最後に:「考える責任」を果たし、AIと共存しよう
この連載で伝えたかったことは一つです。AIは私たちを「指示通りコードを書く作業」から解放しましたが、「考える責任」からは解放していません。むしろ、より高度な判断と責任が求められる時代になりました。
バイブコーディングという言葉が流行したのも最近です。可能性も問題もまだまだ見つかっていないはずで、もっと発展すると信じています。
だからこそ、あなたが見つけた脆弱性のパターン、編み出した検証手法、失敗から学んだ教訓。それらを積極的に共有してください。今日のあなたの気づきが、明日の誰かのセキュリティインシデントを防ぐかもしれません。
私自身も、日々の開発で遭遇したセキュリティの落とし穴や、AIツールの効果的な活用法について、継続的に発信していきます。より実践的な内容やスピード感のある情報については、ぜひ以下からフォローしていただけると嬉しいです。
YouTube:https://www.youtube.com/@kyohei_dev
AIを活用しながらも、疑う気持ちを忘れず出力を適切に検証し、アプリケーションを構築していく。この新しいバランス感覚を、一緒に身につけていければと思います。
挑戦を楽しみながら、安全で価値あるソフトウェアを世に送り出していきましょう。
