---
generated_at: 2026-01-28 10:30:00
metrics:
  claims_total: 35
  claims_with_evidence: 30
  claims_without_evidence: 5
confidence_derived: 0.86
---

# 根拠レポート：セキュリティ設計書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.86**
  - 根拠あり：30 / 35、根拠なし：5
- 優先レビュー（高）
  1. **HSTS設定**：サーバー側設定のため確認不可
  2. **CSRF対策詳細**：サーバー側実装のため確認不可
  3. **トークン有効期限管理**：クライアント側実装未確認
  4. **サーバー側権限チェック詳細**：バックエンド依存
  5. **ソーシャルログイン認証プロバイダー**：バックエンド依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `lib/services/api_client.dart` - API通信、認証ヘッダー設定
- E-02: `lib/services/graph_ql.dart` - GraphQL クライアント、AuthLink設定
- E-03: `lib/services/mutation_query.dart` - GraphQL クエリ/ミューテーション定義
- E-04: `lib/screens/sign_in/view/sign_in_screen.dart` - サインイン画面、生体認証実装
- E-05: `lib/screens/sign_up/view/sign_up.dart` - サインアップ画面、入力検証
- E-06: `lib/utils/shared_preference_helper.dart` - ローカルストレージ管理
- E-07: `lib/utils/input_field_validators.dart` - メール・電話番号バリデーション
- E-08: `lib/utils/server_configuration.dart` - サーバー設定、baseUrl定義
- E-09: `lib/data_model/sign_in_model/signin_model.dart` - サインインレスポンスモデル
- E-10: `lib/main.dart` - アプリエントリポイント、HttpOverrides
- E-11: `android/app/src/main/AndroidManifest.xml` - Android権限設定
- E-12: `ios/Runner/Info.plist` - iOS権限設定、ATS設定
- E-13: `pubspec.yaml` - 依存パッケージ定義
- E-14: `lib/widgets/common_webview.dart` - WebView実装

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | メール/パスワード認証にGraphQL Mutation `customerLogin`を使用 | E-03 | ○ |
| C-02 | 認証成功時にaccessToken/tokenTypeを取得 | E-09, E-03 | ○ |
| C-03 | トークンはSharedPreferenceHelper経由でGetStorageに保存 | E-06 | ○ |
| C-04 | ソーシャルログインに`customerSocialSignUp`を使用 | E-03, E-01 | ○ |
| C-05 | 生体認証に`local_auth`パッケージを使用 | E-13, E-04 | ○ |
| C-06 | 指紋認証の認証情報がSharedPreferenceにローカル保存 | E-04, E-06 | ○ |
| C-07 | Bearer Tokenを使用 | E-02, E-09 | ○ |
| C-08 | GetStorageにトークン保存 | E-06 | ○ |
| C-09 | Cookie自動管理 | E-01, E-02 | ○ |
| C-10 | ログアウト処理で認証情報クリア | E-06 | ○ |
| C-11 | ゲストユーザーの権限範囲 | E-03 | ○ |
| C-12 | 認証済みユーザー専用機能の制御方式 | E-06 | ○ |
| C-13 | AuthLinkによる認証情報自動付与 | E-02 | ○ |
| C-14 | サーバー側権限チェック | **根拠なし** | △ |
| C-15 | GraphQLエンドポイントはHTTPS使用可能 | E-08 | ○ |
| C-16 | HSTS設定 | **根拠なし** | △ |
| C-17 | 証明書検証無効化（badCertificateCallback） | E-10 | ○ |
| C-18 | Android Cleartext Traffic許可 | E-11 | ○ |
| C-19 | iOS ATS緩和設定 | E-12 | ○ |
| C-20 | GetStorageは平文保存 | E-13 | ○ |
| C-21 | 指紋認証用パスワードが平文保存 | E-04, E-06 | ○ |
| C-22 | Google Maps API Keyハードコード | E-11 | ○ |
| C-23 | XSS対策（flutter_html使用） | E-13 | ○ |
| C-24 | 入力値検証（EmailValidator, PhoneNumberValidator） | E-07 | ○ |
| C-25 | パスワード最小6文字要件 | E-04, E-05 | ○ |
| C-26 | CSRF対策詳細 | **根拠なし** | △ |
| C-27 | GraphQL操作ログ出力 | E-02 | ○ |
| C-28 | Android生体認証権限 | E-11 | ○ |
| C-29 | iOS Face ID説明 | E-12 | ○ |
| C-30 | Deep Link設定 | E-11, E-12 | ○ |
| C-31 | FileProvider設定 | E-11 | ○ |
| C-32 | トークン有効期限管理 | **根拠なし** | △ |
| C-33 | 依存パッケージのセキュリティ機能 | E-13 | ○ |
| C-34 | WebView実装 | E-14 | ○ |
| C-35 | ソーシャルログイン認証プロバイダー詳細 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- **C-14: サーバー側権限チェック**：モバイルアプリのコードからはバックエンドの権限チェック実装を確認できない
  - 候補：Bagistoバックエンドソースコード / API仕様書 / サーバー側設計書
- **C-16: HSTS設定**：サーバー側の設定であり、モバイルアプリコードからは確認不可
  - 候補：サーバー設定ファイル / インフラ設計書 / nginxやApache設定
- **C-26: CSRF対策詳細**：サーバー側実装に依存
  - 候補：Bagistoバックエンドソースコード / セキュリティ設計書
- **C-32: トークン有効期限管理**：クライアント側でのトークン有効期限チェック・リフレッシュ処理が確認できない
  - 候補：リフレッシュトークン実装の追加調査 / エラーハンドリング実装確認
- **C-35: ソーシャルログイン認証プロバイダー**：具体的なプロバイダー（Google, Apple等）の設定が確認できない
  - 候補：Firebase設定 / バックエンド設定

## 5) リスクフラグ（レビュー観点）
- **2: 高リスク** - C-17: 証明書検証無効化（本番環境での中間者攻撃リスク）
- **2: 高リスク** - C-21: 指紋認証用パスワード平文保存（資格情報漏洩リスク）
- **1: 中リスク** - C-18, C-19: HTTP通信許可設定（本番環境での通信傍受リスク）
- **1: 中リスク** - C-22: API Keyハードコード（キー漏洩リスク）
- **0: 低リスク** - その他のClaim

## 6) レビュアーチェックリスト（最小）
- [ ] 本番ビルドで証明書検証が有効化されているか確認
- [ ] 本番ビルドでCleartext Traffic/ATSが適切に設定されているか確認
- [ ] 指紋認証用パスワードのKeychain/Keystore移行計画を確認
- [ ] Google Maps API Keyの環境変数化状況を確認
- [ ] トークン有効期限切れ時のエラーハンドリング動作を確認
- [ ] サーバー側CSRF対策の実装状況をバックエンドチームに確認
- [ ] HSTS設定状況をインフラチームに確認
