Chapter 8

セキュリティ、有効期限 & アクセス制限

Cloud Auth の内部有効期限ポリシーと、APIサーバーのレート制限(Rate Limiting)設定一覧です。

🕒 各種トークン・セッションの有効期限

システムで発行されるセッショントークンおよびリセットトークン類の有効期間は以下の通り規定されています。

トークン種類有効期限(ライフタイム)セキュリティ用途
Access Token (JWT)15 分間APIアクセス認可用の短期アクセストークン。
Refresh Token (KV/Cookie)14 日間アクセストークンの自動更新用セッションCookie(ca_refresh_token)。
Email Verification Link24 時間新規登録時のアカウント本確認用メールリンク。
Password Reset Link1 時間パスワード再設定用の認証コードおよびURLの有効期限。
Email Change Link1 時間メールアドレスの変更時の承認メールリンクの有効期限。

🛡️ APIレート制限ポリシー (Rate Limiting)

ブルートフォース攻撃や悪意あるDDoS・スパムからサーバーリソースを防衛するため、IPおよびアカウントごとに以下のレート制限を行っています。

対象API操作最大リクエスト回数計測時間枠 (Window)制限超過時の挙動
ログイン (LOGIN)50 回15 分間HTTP 429 Too Many Requests を返し、以降のログインを遮断
新規登録 (REGISTER)3 回1 時間アカウント作成要求をブロックし、スパムによる大量アカウント作成を抑止
パスワードリセット (RESET)3 回1 時間メール送信負荷を軽減し、ユーザーへのいたずら登録を防ぎます
トークン更新 (REFRESH)30 回15 分間クライアントスクリプトのバグ等による高頻度のトークン更新通信を防止

🔑 パスワードセキュリティ要件

  • 最小文字数: 8文字以上。
  • 最大文字数: 128文字以下。
  • ハッシュアルゴリズム: セキュリティ強度の高い PBKDF2 (SHA-256、100,000回反復処理) を使用してストレージ保存時に厳重に暗号化されます。

🛡️ セッション管理 & 認証情報検証メカニズム

本システムは、高いエッジ実行速度(パフォーマンス)と強固なセキュリティ要件(安全性)を両立させるため、「JWT検証」「DB(D1)セッション検証」 のハイブリッドアーキテクチャを採用しています。

① 認証の紐づけ方式 (Cookie 優先ハイブリッド)

Webフロントエンドからのアクセスでは、ブラウザのセキュリティ機能で保護された ca_access_token セッションCookie を優先して参照します。ネイティブアプリ等のCookieが送信できないクライアントには、Authorization: Bearer ヘッダー 経由でのJWTトークン検証にも対応しています。

② トークン検証と改ざん検知 (インメモリ署名検証)

トークンの中身には userIdsessionId、および role(権限ロール)がクレームとして埋め込まれており、暗号署名(HMAC-SHA256)によって改ざんを自動検知します。APIアクセスごとにデータベースに直接クエリを発行せず、Cloudflare Workers のエッジサーバー上で即座にトークンの正当性を検証するため、極めて低遅延でのAPIレスポンスを実現します。

③ アカウント紐付けとセッション失効処理 (D1 DB 照合)

JWTから取り出された一時セッションID(sessionId)は、D1データベース上の sessions テーブル の現在状態と強固に同期されています。ユーザーが「ログアウト」を明示的に実行した場合、またはパスワード変更などによってセッション全破棄が要求された場合、D1データベースの該当セッション情報を削除(失効処理)することで、トークンの有効期限内であっても即座にAPIアクセスを無効化できます。

🛡️ 本アーキテクチャのセキュリティ適合性(十分性評価):

  • XSS(クロスサイトスクリプティング)対策: Cookieには `HttpOnly` 属性を付与して発行するため、JavaScriptによる悪意あるトークン読み取りや搾取攻撃を完全に遮断します。
  • CSRF(クロスサイトリクエストフォージェリ)対策: Cookieには `SameSite=Lax` 属性を付与し、さらにAPIへの機密要求には独自のHTTPリクエストヘッダ制約やCORSホワイトリスト(`ALLOWED_ORIGINS`)によるオリジン制御を組み合わせることで、第三者サイトからの不正ななりすまし実行を防御しています。
  • Man-in-the-Middle(中間者攻撃)対策: 転送されるすべてのCookie・ヘッダーは `Secure` 属性によってHTTPS経由の暗号化された通信チャネルでのみ転送されるため、通信の傍受から安全です。