セキュリティホワイトペーパー
本書は、Only Gantt(以下「本サービス」)がお客様のアカウントと プロジェクトデータを保護するために講じている技術的・組織的な対策を説明するものです。 記載内容は、実際に稼働しているアプリケーションに実装された対策に基づいています。
1. 認証とアカウントのセキュリティ
- 認証は Google Firebase Authentication が処理し、本サービスがパスワードを保存することはありません。
- メールアドレス+パスワード、または Google アカウント(OAuth 2.0)でサインインできます。
- メール/パスワードのアカウントは、メールアドレスの確認を完了するまでプロジェクトデータにアクセスできません。
- 新規登録および認証フローは Google reCAPTCHA Enterprise によって保護され、スコアベースのリスク分析でボットや不正利用を遮断します。
2. セッション管理
- セッションには、サーバーが発行する
HttpOnly・Secure・SameSite=Lax属性付き Cookie を使用し、クライアント側 JavaScript からはアクセスできません。 - セッション Cookie は発行直後の ID トークン(直近のサインインが必要)からのみ生成されるため、漏洩した長期トークンをセッションに昇格させることはできません。
- すべてのリクエストで、トークンを Firebase に対して再検証し、失効の有無を確認します。
- サインアウトおよびアカウント削除時には、サーバー側ですべてのリフレッシュトークンを失効させます。
3. データ分離とアクセス制御
- プロジェクトデータの読み書きは、すべてサーバー側で Firebase Admin SDK を介してのみ行われます。
- Firestore セキュリティルールにより、クライアントからプロジェクトデータへの直接アクセスはすべて拒否されます。
- すべての API リクエストは認証され、サインイン中のユーザー本人のアカウントに限定されます。他のユーザーのデータを読み取ったり変更したりすることはできません。
- サービス運営者のクライアントを含む第三者が、アプリケーションを通じてお客様のプロジェクトデータにアクセスすることはありません。
4. 入力検証と不正利用の防止
- リクエストボディにはサイズ制限(2 MB)があり、JSON として宣言されていない場合は拒否します。
- アカウントごとにプロジェクト数・タスク数の上限を設け、リソース枯渇を防止します。
- タスクの項目は厳格な許可リストで検証し、危険なキー(
__proto__・prototype・constructor)を遮断してプロトタイプ汚染攻撃を防ぎます。 - プロジェクト識別子は、データベースへアクセスする前に形式を検証します。
- サインイン後のリダイレクトは同一サイト内のパスに限定し、オープンリダイレクト攻撃を防止します。
5. 通信と HTTP セキュリティ
- すべての通信は HTTPS で配信され、HTTP Strict Transport Security(HSTS)で強制されます。
X-Frame-Optionsおよびコンテンツセキュリティポリシーのframe-ancestorsディレクティブにより、クリックジャッキングを防止します。- コンテンツセキュリティポリシーでは、さらに
base-uriを制限し、プラグインコンテンツを無効化します(object-src 'none')。 - MIME スニッフィングを無効化(
X-Content-Type-Options: nosniff)し、リファラ情報を最小化し、未使用のブラウザ機能(カメラ・マイク・位置情報)をPermissions-Policyで無効化します。 - フレームワークのバージョン開示ヘッダーを削除し、UI フレームワークは既定で出力をエスケープしてクロスサイトスクリプティング(XSS)を緩和します。
6. データの保存と削除
- プロジェクトデータは Google Firebase(Firestore)に保存され、Google Cloud による保存時・転送時の暗号化で保護されます。
- セルフサービスのアカウント削除により、プロフィールとすべてのプロジェクトデータを完全に削除し、セッションを失効させます。
- 削除処理が中断された場合でも孤立データが残らないよう、サーバー側のバックアップ・クリーンアップ処理を備えています。
7. 脆弱性管理
- 依存ライブラリは既知の脆弱性を継続的に監査し、パッチを適用しています。
- アプリケーションフレームワークは、セキュリティリリースに合わせて最新の状態を維持します。
8. 脆弱性の報告
潜在的なセキュリティ上の問題を発見された場合は、本サービスが指定する 問い合わせ窓口までご連絡ください。責任ある開示に感謝し、いただいたすべての 報告について調査いたします。