SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

生成AI時代のセキュリティ入門

【「コーダー」から「監督者」へ】「バイブコーディング」で脆弱性を持ち込まないためのマインドセットとツール活用

生成AI時代のセキュリティ入門 第4回

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:パブリックアクセスの見直し
  • API設定
    • CORS:Access-Control-Allow-Originにワイルドカード不使用
    • 個人データAPIにCache-Control: private, no-store
    • セキュリティヘッダ(HSTS, CSP, X-Frame-Options)設定
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ツールの効果的な活用法について、継続的に発信していきます。より実践的な内容やスピード感のある情報については、ぜひ以下からフォローしていただけると嬉しいです。

X:https://x.com/labelmake

YouTube:https://www.youtube.com/@kyohei_dev

 AIを活用しながらも、疑う気持ちを忘れず出力を適切に検証し、アプリケーションを構築していく。この新しいバランス感覚を、一緒に身につけていければと思います。

 挑戦を楽しみながら、安全で価値あるソフトウェアを世に送り出していきましょう。

この記事は参考になりましたか?

生成AI時代のセキュリティ入門連載記事一覧

もっと読む

この記事の著者

Kyohei Fukuda(キョウヘイ フクダ)

 広島県出身、東京在住のWebエンジニア。 国内IT企業数社でフロントエンド開発に従事した後、現在は外資IT企業でSolution Engineer兼Developer Advocateを務めている。OSSのPDF生成ライブラリ「pdfme」を開発し、関連する書類作成サービスを個人開発し運営。 JavaSc...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22691 2025/12/29 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング