導入事例一覧へ戻る
SaaS・IT·株式会社テックB·GitHub Copilot·期間: 2週間
SaaS管理画面の認証・権限管理を再設計
認証・認可セキュリティReactNode.js
課題
株式会社テックBは、GitHub Copilotを活用して社内向けSaaS管理画面を開発しました。社内利用のため当初はセキュリティ要件を緩く設定していましたが、顧客向けに公開する段階で以下の問題が発覚しました。
- 認証トークンがローカルストレージに平文保存されていた
- 管理者権限のチェックがフロントエンドのみで行われていた
- APIエンドポイントに認可チェックがないものが多数存在
- パスワードリセット機能にレート制限がない
診断結果
セキュリティ診断の結果、OWASP Top 10に該当する脆弱性が 5件 発見されました。
Critical(即座に対応が必要)
- IDOR(Insecure Direct Object Reference): ユーザーIDを変更するだけで他ユーザーのデータにアクセス可能
- 認証バイパス: 管理者APIにトークンなしでアクセス可能な状態
High(早急に対応が必要)
- XSS脆弱性: ユーザー入力がサニタイズされずにHTMLに挿入される箇所が12件
- セッション管理不備: セッションの有効期限が無期限に設定
Medium
- 情報漏洩: エラーレスポンスにスタックトレースが含まれる
改善内容
| 改善項目 | 施策 | |---------|------| | 認証方式 | JWT → HttpOnly Cookieベースに変更 | | 認可 | RBAC(Role-Based Access Control)を導入、全APIに適用 | | 入力検証 | Zodによるバリデーションをサーバーサイドに一元化 | | セッション | 有効期限設定、リフレッシュトークン導入 | | セキュリティヘッダー | CSP、HSTS、X-Frame-Options等を追加 | | レート制限 | 認証関連APIに制限を適用 |
結果
- セキュリティ脆弱性: 5件 → 0件(全件解消)
- 外部セキュリティ監査: 合格
- 認証処理のレスポンスタイム: 変化なし(パフォーマンスを維持)
- 顧客向け公開: 予定通りリリース達成
「Copilotが書いたコードをそのまま信頼していましたが、セキュリティは人の目が絶対に必要だと痛感しました。公開前に気づけて本当に良かったです。」 — 株式会社テックB CTO